I am trying to write a tail-recursive function in Standard ML to find the length of a list; so, for example, len([1,2,3,4,5]) should be 5.
I was able to do it in Scheme no problem:
(define (len1 lis sofar)
(if
(null? lis) sofar
(len1 (cdr lis) (+ sofar 1))))
(define (len lis)
(len1 lis 0))
(len (list 2 3 4 5 6 7)) = 6
But I can't seem to get it in SML. Here is what I have so far:
fun len [] = raise Fail "len: empty list"
| len [x] = (x,x)
| len (x::xs) =
or
len1([]:list, curLen:int) = []null? then curLen | len1(tl[], curLen+1);
len([]) = len1([], 0);