Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#是否有打印表达式类型的方法?_F# - Fatal编程技术网

F#是否有打印表达式类型的方法?

F#是否有打印表达式类型的方法?,f#,F#,我在寻找与ghci的道德等价物: Prelude> :t 1 + 2 1 + 2 :: Num a => a 在F#Interactive中,每次执行后都会得到: > (+);; val it : (int -> int -> int) = <fun:it@1> > 1 + 2;; val it : int = 3 > printfn "Hi";; Hi val it : unit = () (+);; val it:(int->int-

我在寻找与ghci的道德等价物:

Prelude> :t 1 + 2
1 + 2 :: Num a => a
在F#Interactive中,每次执行后都会得到:

> (+);;
val it : (int -> int -> int) = <fun:it@1>
> 1 + 2;;
val it : int = 3
> printfn "Hi";;
Hi
val it : unit = ()
(+);;
val it:(int->int->int)=
> 1 + 2;;
val it:int=3
>printfn“嗨”;;
你好
val it:unit=()

默认情况下,它不是已经这样做了吗?例如
1生成
valit:int=1
@JohnPalmer-这很方便,但并不完全相同。考虑<代码>(+)< /代码>,这将不显示适当的泛型类型签名。或者使用类似于
deleteDatabase()
的表达式,您可能希望在不执行它的情况下查找的类型。@kvb好的,在
deleteDatabase()
的情况下,您仍然可以键入
deleteDatabase通常你也有那些漂亮的工具提示(在VS,MyDealth-Heck甚至在绑定的Emacs中))@ Cast-如果它比Haskell更通用,因为操作数和返回类型的类型不匹配(例如考虑<代码>(+)Syt.DATEMEM.现在(St.TimeSp..FROSE秒1)< /代码>)。正如我在对该问题的评论中所述,这是一种有用的技术,但并不是Haskell功能的真正替代品,因为表达式的计算可能会产生副作用,也因为值限制可能会导致结果不如表达式本身在其他上下文中的通用性(或者甚至可能使某些表达式作为顶级值无效)。但它似乎是唯一的“道德等价物”。我将回答这个问题。谢谢!更重要的是,它仍然适用于副作用代码,如
printfn