2009-05-13 12 views
1

Может ли кто-нибудь описать это выражение F # для меня?Семантика выражения F #

val augment: GameGrid -> points -> unit 

Что означает ключевое слово val?

Верно ли, что обычно type -> type указывает функцию, которая возвращает указанный тип? Итак, type -> type -> type указывает функцию, которая возвращает функцию, возвращающую указанный тип?

ответ

4

(Бит «Вэл» не является выражением, экспромтом, я думаю, что он может появиться в трех различных контекстах:

  • выход FSI (F # интерактивный REPL), описывающий INFERRED тип привязки
  • в подписи (.fsi) файл, описывающий тип значения модуля пусть переплете
  • в определении структуры/класса («явный» синтаксис), чтобы определить экземпляр переменного

и ни один о е те технически выражения контексты.)

Что касается типа, действительно

A1 -> A2 -> R 

означает функцию, которая принимает A1, и возвращает функцию, которая принимает A2 и возвращает R. Аргументы карированы , и это может вам хорошо читать, например

F# function types: fun with tuples and currying

который описывает выделки и частичное применение в более подробно.

+0

Это произошло из файла FSI. –

3

Как вы получили этот выход? В FSI?

Val только указывает определение значения.

E.g. если бы вы написали следующее в C#

private void Foo(int i); 

можно было бы написать это в F #

val Foo : int -> unit 

Относительно type -> type -> type: Это функция с двумя параметрами (типа), возвращающимся `type'

Э.Г.

let plus a b = a + b 

имеет подпись int -> int -> int.

Ваша идея с функцией, которая возвращает функцию, на самом деле правильная. Это очень интересный метод во многих функциональных языках, называемый currying

+0

Да, это произошло из файла FSI. –

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

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