好的,我有一个 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 存储棋子的代数位置,potentialPoss 是马移动列表)
但是我得到了关于 second fun:“表达式中出现意外的关键字‘fun’。应为‘]’或其他标记。” 在 [: "不匹配的 '['."
我觉得这是正确的语法? 有什么建议吗?
最佳答案
您只需要所有列表元素都与第一个元素一样缩进:
[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
这适用于所有代码块(计算表达式、模式匹配等)。
关于list - F# 列表分布在多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602690/