当前位置: 首页 > 知识库问答 >
问题:

Haskell构造函数别名

计寒
2023-03-14

有没有一种方法可以在Haskell中有类似于创建“构造函数别名”的东西?我的想法与类型别名类似,您可以给类型一个不同的名称,但它仍然以别名类型的方式表现。

我的用例是一个系统,其中我有一个指定的时间作为我要建模的一些对象的属性,所以utctime。其中一些可能是“可变”时间,这意味着它可能还没有被分配一个时间,或者它拥有的时间是“可移动的”。所以可能是utctime

我非常肯定我对Haskell非常了解,可以说不存在构造函数别名这回事,但我很好奇是不是有什么我不知道的黑客,还是有其他处理这种情况的好方法。

共有1个答案

宰父跃
2023-03-14

“模式同义词”可能会合并到GHC:http://ghc.haskell.org/trac/ghc/ticket/5144。同时还有-XViewPatterns,它允许您编写以下内容:

type Timeslot = Either UTCTime (Maybe UTCTime)
fieldA = either Just (const Nothing)
fieldB = either (const Nothing) id


f (fieldA -> Just time) = ...
f (fieldB -> Just time) = ...
f _ = ...
 类似资料:
  • 实际上,我不明白无参数构造函数和默认构造函数的区别是什么。 在创建名为cFrame的Test对象时,是否调用此类的默认构造函数?

  • 默认情况下,Angular提供生命周期钩子。 如果我们已经有,为什么要使用?

  • JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过 new 关键字方式调用的函数都被认为是构造函数。 在构造函数内部 - 也就是被调用的函数内 - this 指向新创建的对象 Object。 这个新创建的对象的 prototype 被指向到构造函数的 prototype。 如果被调用的函数没有显式的 return 表达式,则隐式的会返回 this 对象 - 也就是新创建的对象

  • 本文向大家介绍Javascript 普通函数和构造函数的区别,包括了Javascript 普通函数和构造函数的区别的使用技巧和注意事项,需要的朋友参考一下 普通函数和构造函数的区别 在命名规则上,构造函数一般是首字母大写,普通函数遵照小驼峰式命名法。 在函数调用的时候: function fn() { }      构造函数:1. new fn( )                      2

  • 主要内容:默认拷贝构造函数拷贝和复制是一个意思,对应的英文单词都是 。 对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。 在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对

  • 问题内容: 其实我不明白,无参数构造函数和默认构造函数有什么区别。 创建名为cFrame的Test对象时,这是否调用此类的默认构造函数? 问题答案: 该构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含对(not )的调用,这是默认行为。如果实现任何构造函数,则不再收到默认的构造函数。 JLS-8.8.9。默认构造函数说(部分), 如果一个类不包含构造函数声明,则隐式声明一个没有