无法使用REPL

时间:2015-12-02 23:22:59

标签: f#

如何使用REPL显示数据?

我确信这是一个非常基本的问题。

我引用了this

我将代码粘贴在REPL窗口中。但我没有看到卡片显示。

type Suit = | Spades
            | Diamonds
            | Clubs
            | Hearts

type Face = |Two | Three | Four | Five 
            | Six | Seven | Eight | Nine | Ten
            | Jack | Queen | King | Ace

type Card = {Face: Face; Suit: Suit}

type Deal = | Hand of Card * Card
            | Hit of Card

let dealPlayer() = Hit{Face=Two; Suit=Spades}
dealPlayer |> printfn "%A"

结果:

  

val it:unit =()

更新

当我将代码更新为以下内容时:

let dealPlayer() = Hit{Face=Two; Suit=Spades}
dealPlayer() |> printfn "%A"

我仍然明白这一点:

  

val dealPlayer:unit - >处理它:unit =()

2 个答案:

答案 0 :(得分:3)

您不必在FSI中明确打印值;它会在您评估表达式时自动为您执行此操作:

> dealPlayer ();;
val it : Deal = Hit {Face = Two;
                     Suit = Spades;}

如果您不将表达式绑定到命名值,则它将绑定到隐式值it,如上所示。

FSI很好地格式化并显示功能数据类型:记录,区分联合,列表,数组。对于对象,它通常会调用ToString()以获取显示值。

答案 1 :(得分:1)

你没有评估`dealPlayer'功能

更改

dealPlayer |> printfn "%A"

dealPlayer() |> printfn "%A"

注意:您可能希望在其余代码之后运行行dealPlayer() |> printfn "%A";;,否则打印文本将出现在REPL返回的顶部,然后打印输出您声明的类型以及您声明的函数的类型签名。