To compile with Homebrew-installed LLVM:
PATH=/usr/local/opt/llvm/bin:$PATH crystal build crystal-tags.cr
cons = lambda { |a, b| | |
lambda { |m| m.call(a, b) } | |
} | |
car = lambda { |m| m.call(lambda { |a, _| a }) } | |
cdr = lambda { |m| m.call(lambda { |_, b| b }) } | |
# A list that only uses lambdas | |
list = cons.call(1, cons.call(2, cons.call(3, nil))) |
To compile with Homebrew-installed LLVM:
PATH=/usr/local/opt/llvm/bin:$PATH crystal build crystal-tags.cr
record Cell, car, cdr | |
alias List = Nil | (-> Cell) | |
def inf(x = 0) | |
inf :: -> Cell | |
inf = -> { Cell.new(x, inf) } | |
end | |
def nat(x = 0) |