LINUX.ORG.RU

История изменений

Исправление kipar_2024, (текущая версия) :

На Crystal:

alias Adder = Proc(Int32, Adder)

def make(acc : Int32) : Adder
  return ->(y : Int32) do
    puts("acc(#{acc}) + #{y}")
    make(acc + y)
  end.as(Adder)
end

def print_sum(x : Int32) : Adder
  make(x)
end

print_sum(10).call(20).call(30).call(40)

https://carc.in/#/r/i0i8

Исправление kipar_2024, :

На Crystal:

alias Adder = Proc(Int32, Adder)

def make(acc : Int32) : Adder
  return ->(y : Int32) do
    puts("acc(#{acc}) + #{y}")
    make(acc + y)
  end.as(Adder)
end

def print_sum(x : Int32) : Adder
  make(x)
end

print_sum(10u8).call(20).call(30).call(40)

https://carc.in/#/r/i0i8

Исходная версия kipar_2024, :

На Crystal:

alias Adder = Proc(Int32, Adder)

def make(acc : Int32) : Adder
  return ->(y : Int32) do
    puts("acc(#{acc}) + #{y}")
    make(acc + y)
  end.as(Adder)
end

def print_sum(x : Int32) : Adder
  make(x)
end

f = print_sum(10u8)
f1 = f.call(20)
f2 = f1.call(30)
f3 = f2.call(40)

https://carc.in/#/r/i0i8