Skip to content

Commit

Permalink
Add List equals and tail to list.bend
Browse files Browse the repository at this point in the history
  • Loading branch information
In-Veritas committed Aug 8, 2024
1 parent 5ad9c72 commit ea96b43
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions examples/list.bend
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,35 @@ head = @l
List/Nil: []
}

# List tail:
# List l -> List
# returns the list except for the first item in it, or [] if the list is empty.
def tail(l):
match l:
case List/Cons:
return l.tail
case List/Nil:
return []

# List equals:
# List xs, List ys, function cmp -> 1|0
# Compares the elements in two lists and returns 1 if they're equal, and 0 otherwise.
# The function cmp compares two values and returns 1 if they're equal, and 0 otherwise.
equals xs ys cmp = match xs {
List/Cons: match ys {
List/Cons: if (cmp xs.head ys.head) {
(equals xs.tail ys.tail cmp)
} else {
0
}
List/Nil: 0
}
List/Nil: match ys {
List/Cons: 0
List/Nil: 1
}
}

# List pop_front:
# List l -> List l
# removes and discards the first item of list l.
Expand Down

0 comments on commit ea96b43

Please sign in to comment.