【问题标题】:Simple correct implementation file in verbose syntax?详细语法中的简单正确实现文件?
【发布时间】:2013-01-22 14:53:50
【问题描述】:

更新

一般问题是:如何正确使用 F# 的详细语法?详细语法是接近 OCaml 语法的语法,即带有许多逗号等的语法。

旧文本

我想在F# 中关闭轻量级语法,以获得更接近OCaml 的详细语法。

我写了以下代码

#light "off"

let k=3.14;;

在 let 上出现错误:

Unexpected keyword 'let' or 'use' in implementation file

什么是没有轻量语法的正确实现文件结构?

【问题讨论】:

  • 你实际上不再需要#light - 但它应该没问题
  • @John 我猜你误会了我:我想关灯让语法更接近 OCaml
  • 我现在看到了 light 的东西。将您的示例输入fsi 对我来说很好 - 也许您在某处有一些有趣的 unicode 字符?

标签: f#


【解决方案1】:

问题是您已将其写入.fsi 文件中 - 这是一个 FSharp 接口定义文件;它与fsi.exe (FSharp Interactive) 无关。

消息“实现文件中出现意外的关键字'let'或'use'”是一个告诉-接口定义是预期的。只需使用 .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

【讨论】:

  • 我想使用 F#,但语法冗长。该怎么做?
  • @SuzanCioc 一个带有#light "off".fs 文件是这样做的方法。
【解决方案2】:

我看不出有什么问题,但是...为什么是两个;?你是在编译还是在fsi运行?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多