2016-04-30 4 views
1

На самом деле я смущен этим, я обычно использую функцию сгиба без проблем, но теперь я не могу кажется, чтобы заставить его работать по какой-то причине, и я не могу найти, почему.List.fold_left "Это выражение имеет тип 'список, но ожидалось выражение типа' b * 'c *' d

L.fold_left(fun (a,b,c) acc -> if !x != 9 then (x:= !x+1; (a,b,c)::acc)else acc) list[];; 

Я также пытался просто делать 1 :: согл, но он не работает.

ответ

2

Просто позаботьтесь Одер из аргумент: fold_left ожидает функцию, в которой первый аргумент является аккумулятором (... в некоторой степени аккумулятор является аргументом «слева»), тогда как fold_right ожидает функцию, в которой аккумулятор является вторым (... Акционер включен право).
Так что просто напишите fun acc (a,b,c) вместо fun (a,b,c) acc и ваш код скомпилируется.

 Смежные вопросы

  • Нет связанных вопросов^_^