更新
一般的问题是:如何正确使用 F# 的详细语法?详细语法是接近 OCaml 语法的语法,即带有许多逗号等的语法。
旧文本
我想关闭轻量级语法F#
以获得更接近OCaml
.
我写了以下代码
#light "off"
let k=3.14;;
并在 let 上出错:
Unexpected keyword 'let' or 'use' in implementation file
什么是没有轻量语法的正确实现文件结构?
更新
一般的问题是:如何正确使用 F# 的详细语法?详细语法是接近 OCaml 语法的语法,即带有许多逗号等的语法。
旧文本
我想关闭轻量级语法F#
以获得更接近OCaml
.
我写了以下代码
#light "off"
let k=3.14;;
并在 let 上出错:
Unexpected keyword 'let' or 'use' in implementation file
什么是没有轻量语法的正确实现文件结构?
问题是你已经把它写在一个.fsi
文件中——这是一个 FSharp 接口定义文件;fsi.exe
它与(FSharp Interactive)无关。
消息“Unexpected keyword 'let' or 'use' in implementation file”是一个告诉 - 接口定义是预期的。只需使用.fs
扩展程序。
如果您想重用 ML 代码,请考虑将文件扩展名更改为.ml
,并在开头添加一个#nowarn "62"
指令以忽略遗留警告。
#nowarn "62"
#light "off"
let div2 = 2;;
let f x =
let r = x % div2 in
if r = 1 then
begin "Odd" end
else
begin "Even" end
我看不出有什么问题,但是...为什么是两个;?您是在编译它还是在 fsi 中运行?