簡體   English   中英

Haskell在F#中的“派生表演”?

[英]Haskell's “deriving Show” in F#?

在Haskell中,通過簡單地將deriving Show添加到類型定義中,很容易將代數類型/區分聯合“可顯示”作為字符串。

在F#中,我最終寫出如下內容:

type Pos = 
    | Pos of int * int
    override this.ToString() = 
        match this with
        Pos(startp, endp) -> sprintf "Pos(%d, %d)" startp endp

顯然,對於更復雜的類型,它會變得更糟。

有什么辦法可以在F#中deriving Show

如果使用%A格式說明符,則f#打印函數(如printf可以合理地格式化任何數據類型(如果指定%O則它們使用ToString )。 您可以使用sprintf實現ToString ,它返回格式化的字符串:

type Pos =  
    | Pos of int * int 
    override x.ToString() = sprintf "%A" x 

這打印例如“Pos(1,2)”,它適用於大多數F#類型(列表,聯合,記錄,元組)。 它比僅添加deriving Show長一些,但至少你不必自己實現打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM