gpt4 book ai didi

.net - Haskell 在 F# 中的 "deriving Show"?

转载 作者:行者123 更新时间:2023-12-04 03:02:46 24 4
gpt4 key购买 nike

在 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

显然,更复杂的类型会变得更糟。

任何获得类似 deriving Show 的方法在 F# 中?

最佳答案

F#打印函数如printf如果您使用 %A,则能够合理地格式化任何数据类型格式说明符(如果您指定 ToString,它们使用 %O)。你可以实现ToString使用 sprintf它返回格式化的字符串:

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

例如,这会打印“Pos (1, 2)”,它适用于大多数 F# 类型(列表、联合、记录、元组)。它比仅仅添加 deriving Show 有点长但至少您不必自己实现打印。

关于.net - Haskell 在 F# 中的 "deriving Show"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com