F# 交互命令对应 ghci :t :i

F# interactive commands corresponds to ghci :t :i

我正在通过 F# interactive 学习 F#。

是否有类似 GHCi :t:i 的命令?

参考:fsharp-interactive

F# Interactive中你可以只写函数名来查看它的类型。例如,如果您想查看 idstringList.map 的类型,只需编写它们:

> id;;
val it : ('a -> 'a)

> string;;
val it : (obj -> string) = <fun:it@6-3>

> List.map;;
val it : (('a -> 'b) -> 'a list -> 'b list)

这为您提供了类似于 GHCi 中 :t 的功能。

我不知道有任何对应于 :i 的命令,尽管我承认它很有用。

我建议您永远不要直接输入 FSI。使用支持 F# 的编辑器,例如 Visual Studio、VS Code 或 Rider。在编辑器中编写代码,select 代码中的定义或表达式并发送到 FSI(通常使用 Alt-Enter)。这将提供更好的体验并为您节省大量时间。好处:

  • 任何符号的悬停类型信息(包括函数的类型参数以及它们在特定上下文中可能受到的限制)
  • 对多个 functions/values
  • 进行实时类型错误检查
  • 自动完成建议
  • 语法高亮
  • 无需在任何行的末尾放置 ;;

多年来我一直在大量使用 FSI 编写 F#,但在第一天之后我就再也没有输入过 FSI,因为这样做没有任何优势。