gpt4 book ai didi

haskell - 将常量应用于数据类型的所有字段

转载 作者:行者123 更新时间:2023-12-02 02:32:19 26 4
gpt4 key购买 nike

假设我有以下数据类型

data A = A{x::Int,y::Int,z::Int}

有没有办法在所有字段上应用 0 来得到这样的东西:
let a = A 0 0 0

基本不重复 0
最后的目标是使用 mempty来自 Sum Int并做这样的事情:
let a = myfunction mempty :: Sum Int

并有 a == A 0 0 0
谢谢 !

最佳答案

没有一个功能,但您可以编写 Control.Monad.join与自己。您还必须打开 0 的包装来自 mempty首先,因为它有类型 Sum Int ,不是 Int .

let a = (join . join) A (getSum mempty)

然后您可以定义 myfunction
myfunction = (join . join) A . getSum

和写
let a = myfunction (mempty :: Sum Int)
myfunction更直接的定义,不过,只是
myfunction (Sum x) = A x x x

关于haskell - 将常量应用于数据类型的所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61028175/

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