2013-10-10 3 views
1

Далее в my last question:F # функция высшего порядка расшифровка

let safeInput:Map<'a,'b> option -> 'a -> 'b -> Map<'a,'b> option = fun x y z -> 
    match x with 
    | Some d -> Some(d.Add(y,z)) 
    | None -> Some([y,z]|>Map.ofList) 

Я понимаю, как простые функции высшего порядка объявлены как тип ... чтение справа налево, если «->» используется более один раз, чтобы расшифровать то, что он возвращает, т. е. функцию более высокого порядка.

Для приведенного выше примера из книги ... Я понимаю, что это добавление к карте, я немного туманно о том, как следует расшифровать верхнюю строку? И использование ключевого слова 'fun'?

ответ

4

Таким образом, первая строка утверждает, что safeInput это функция, которая принимает Map option в key в value, а затем возвращает map option. Ключевое слово fun - это просто способ создания функции.

Эквивалентная функция

let safeInput (x:Map<'a,'b> option) (y:'a) (z:'b) :Map<'a,'b> option = 
     match x with 
      | Some d -> Some(d.Add(y,z)) 
      | None -> Some([y,z]|>Map.ofList) 
Смежные вопросы