2015-03-12 2 views
2

Я хотел бы понять, как оценивается приведенный ниже код Haskell foldr.Haskell foldr с функцией

k x y = x 

foldr k 1 [0..5] 

Результат 0, но я не могу понять, почему он равен нулю? Я хотел бы думать, что x равно 1 элементам в списке y. Может кто-нибудь объяснить это мне, пожалуйста? Я искал его в Интернете, но не нашел ничего полезного.

+3

Подсказка: 'foldr к 1 [0..5] 'расширяется до' 0 ​​\ 'k \' foldr k 1 [1..5] ' – dg123

+0

Первый параметр функции принимает элементы списка. – interjay

+0

Я подозреваю, что вы можете ввести в заблуждение 'foldr' с' foldl'. – dfeuer

ответ

9

Haskell Wiki имеет некоторую полезную информацию о том, как интерпретировать foldr, в том числе это изображение:

enter image description here

Вы можете увидеть, как ваше выражение расширяется:

0 `k` (1 `k` ... (5 `k` 1))))) 
Смежные вопросы