List<e> {
 public List(head, tail) {
  Head = head;
  Tail = tail;
 }
 public property e Head {
  get() { return e; }
  set(value) { Head = value; }
 }
 public property List<e> Tail {
  get() { return Tail; }
  set(list) { Tail = list; }
 }
 public insert(value) {
  Tail = List.new(value, Tail);
 }
}

こんな構文が通るようにしてくれ。
もちろん型推論で静的型付け言語な。