;; -*- Mode: Irken -*-
(include "lib/core.scm")
(include "lib/pair.scm")
(define length
() -> 0
(_ . tl) -> (+ 1 (length tl)))
(define length1
(list:nil) -> 0
(list:cons _ tl) -> (+ 1 (length1 tl)))
(define length2
() acc -> acc
(_ . tl) acc -> (length2 tl (+ 1 acc))
)
(define (length3 l)
(length2 l 0))
(define (length4 l)
(define recur
() acc -> acc
(_ . tl) acc -> (recur tl (+ 1 acc))
)
(recur l 0)
)
(length4 '(1 2 3 4 5))