git @ Cat's Eye Technologies Tamsin / master lib / list.tamsin
master

Tree @master (Download .tar.gz)

list.tamsin @masterraw · history · blame

list {
  reverse(list(H, T), A) = reverse(T, list(H, A)).
  reverse(nil, A) = A.

  member(X, nil) = fail 'not a member'.
  member(X, list(H,T)) =
    $:equal(X, H) & H | member(X, T).

  add_elem(X, L) =
    member(X, L) & L | return list(X, L).

  union(nil, L2) = L2.
  union(list(H,T), L2) =
    add_elem(H, L2) → L2 &
    union(T, L2).

  append(nil, L) = L.
  append(list(H, T), L) =
    append(T, L) → T & return list(H, T).
}