F # список разбит на несколько строк - PullRequest
2 голосов
/ 09 апреля 2011

Хорошо, у меня есть список функций в F #, и для ясности я хочу распределить их по нескольким строкам, как показано:

type pos=char*int
let potentialPoss:List<pos->pos>=
    [fun (c,i)->(c+char 1,i+2);
    fun (c,i)->(c+char -1,i+2);
    fun (c,i)->(c+char 1,i-2);
    fun (c,i)->(c+char -1,i-2);
    fun (c,i)->(c+char 2,i+1);
    fun (c,i)->(c+char -2,i+1);
    fun (c,i)->(c+char 2,i-1);
    fun (c,i)->(c+char -2,i-2) ]

Кажется достаточно разумным, верно?(К вашему сведению, pos хранит алгебраическую позицию шахматной фигуры, а потенциалPoss - это список ходов рыцарей)

Но я получаю синтаксис для второго fun : " Неожиданное ключевое слово'fun' в выражении. Ожидается ']' или другой токен."и на [:" Unmatched "['. "

это чувствуетмне нравится правильный синтаксис?какие-нибудь предложения?

Ответы [ 2 ]

5 голосов
/ 09 апреля 2011

Вам просто нужно, чтобы все элементы списка были с таким же отступом, как и первый элемент:

[fun (c,i)->(c+char 1,i+2);
 fun (c,i)->(c+char -1,i+2);
 fun (c,i)->(c+char 1,i-2);
 etc

Это верно для всех блоков кода (выражений вычислений, сопоставления с образцом и т. Д.).

4 голосов
/ 09 апреля 2011

Я не уверен, почему компилятор так раздражает, но это исправляет:

type pos=char*int
let potentialPoss:List<pos->pos>=
    [
        fun (c,i)->(c+char 1,i+2)
        fun (c,i)->(c+char -1,i+2)
        fun (c,i)->(c+char 1,i-2)
        fun (c,i)->(c+char -1,i-2)
        fun (c,i)->(c+char 2,i+1)
        fun (c,i)->(c+char -2,i+1)
        fun (c,i)->(c+char 2,i-1)
        fun (c,i)->(c+char -2,i-2) 
    ]

Кстати, точки с запятой, как правило, взаимозаменяемы с переносами строк в F #, поэтому я удалил их.

...