F# 交互命令对应 ghci :t :i
F# interactive commands corresponds to ghci :t :i
我正在通过 F# interactive 学习 F#。
是否有类似 GHCi :t
、:i
的命令?
:t value
显示值的类型。
:i type
显示类型的顶级声明。
在F# Interactive中你可以只写函数名来查看它的类型。例如,如果您想查看 id
、string
或 List.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,因为这样做没有任何优势。
我正在通过 F# interactive 学习 F#。
是否有类似 GHCi :t
、:i
的命令?
:t value
显示值的类型。:i type
显示类型的顶级声明。
在F# Interactive中你可以只写函数名来查看它的类型。例如,如果您想查看 id
、string
或 List.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,因为这样做没有任何优势。