Как преобразовать функцию, определенную с сопоставлением с образцом, в эквивалентную лямбду?

Как мне написать

f 0 = 1
f x = (f(x-1))*2 + 2 

как лямбда в хаскеле?

Спасибо в ожидании.

2 ответа

Вы переместили бы образец соответствия справа и использовали бы case выражение

f = \ x -> case x of
  0 -> 1
  x -> f (x-1) * 2 + 1
f = \x -> if x == 0 then 1 else (f (x - 1)) * 2 + 2
Другие вопросы по тегам