如何为GHCI强制执行类型构造函数参数

贝科维奇·阿德里安

您好我有以下问题:我正在newtype通过方法构造参数,并且我不知道如何明确地告诉GHCII want you to instiantiate this newtype using this type parameter

 newtype M a = M {fu::a->Int}

 var = M (\s-> length (s:"asa"))  #tell him i want the type parameter to be Char

 b = (fu var) 'c' 

我期望得到的是:4因为length 'c':"aaa"==4

我得到的是:

interactive>:118:5: error:
    * Couldn't match expected type `A [Char]'
                  with actual type `Ghci30.A [Char]'
      NB: `Ghci30.A' is defined at <interactive>:100:1-25
          `A' is defined at <interactive>:109:1-25
    * In the first argument of `fu', namely `b'
      In the expression: (fu b) "asa"
      In an equation for `it': it = (fu b) "asa"
开支

当您看到类似的名称时Ghci30.A [Char],这意味着您已经A在GHCi中重新定义了类型如果您使用了正确的.hs文件并重新加载它,则不会有问题

考虑以下GHCi会议:

> data A = A Int
> x = A 2
> data A = A Char  -- redefinition
> :t x

输出应该是什么?该类型的xA,但它不是同一类型的A具有Char内。GHCi会将类型打印为

x :: Ghci0.A

如果您x在重新定义类型后重新定义,则不会再次收到该错误A

如果是您的情况,x则可能需要重新定义fu,但仍指的是old A进行检查:t fu:如果提到Ghci30.A,就是这样。

对于非平凡的定义,我建议使用.hs文件并重新加载它,以免造成任何麻烦。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Dart / vscode:将函数本身作为构造函数的参数传递时,强制执行函数参数类型

如何为给定类型的 Flutter 小部件强制执行某些参数值?

如何通过其实现的接口在具体类中强制执行类型构造函数?

根据参数中的属性强制执行函数的返回类型

如何在Java中强制执行构造函数

如何在函数参数中强制执行类型并避免隐式转换?

如何使用类型强制执行特定的参数对?

根据函数的参数化类型对函数强制执行参数和返回类型限制

未强制执行函数返回类型

Typescript - 将函数及其参数传递给另一个函数并强制执行参数的数量和类型

我们如何在PHP中强制执行参数类型?

强制执行某些类型的可变参数模板

未强制执行字符串文字类型参数

不强制执行与路径相关的参数类型(?)

如何在打字稿中的类方法上强制执行函数类型接口?

如何防止构造函数在C ++中强制转换参数类型?

强制执行通用类型返回函数

如何强制执行复制省略,为什么它不能与已删除的复制构造函数一起使用?

如何通过Builder模式强制执行的设定参数的顺序

如何在 blazor 组件中强制执行参数?

如何在Jenkins DSL中强制执行参数排序?

应该如何使用 useDispatch 来强制执行类型检查?

如何在ExcelDataReader中强制执行无类型的列?

如何在python列表上强制执行特定类型

如何在函数调用中强制执行序列

Google 的`DoNotOptimize()` 函数如何强制执行语句排序

具有在参数中强制执行的单一类型的C ++参数包

强制执行特定数量的参数

是否强制执行联合类型?