小编use*_*402的帖子

请向我解释单态限制吗?

我开始做99个haskell问题,我遇到问题7,我的单元测试爆炸了.

显然,这是由于:http://www.haskell.org/haskellwiki/Monomorphism_restriction

我只是想确保我理解正确,因为我有点困惑.

情况1:func a定义为没有类型def或非严格类型def然后使用一次,编译器在编译时没有问题推断类型.

情况2:相同FUNC a在程序中使用多次,编译器不能100%确定是什么类型,除非它重新计算对于给定参数的函数.

为了避免计算损失,ghc向程序员抱怨它需要严格的类型def a 才能正常工作.

我想在我的情况下,assertEqual有类型def

 assertEqual :: (Eq a, Show a) => String -> a -> a -> Assertion
Run Code Online (Sandbox Code Playgroud)

test3我被定义为我解释为它有两种可能的类型testcase3(Show和Eq)并且不知道如何继续时,我得到了一个错误.

这听起来是否正确还是完全关闭?

problem7.hs:

-- # Problem 7
-- Flatten a nested list structure.

import Test.HUnit

-- Solution

data NestedList a = Elem a | List [NestedList a]

flatten :: NestedList a -> [a]
flatten (Elem x) = [x]
flatten (List x) = …
Run Code Online (Sandbox Code Playgroud)

haskell monomorphism-restriction

8
推荐指数
1
解决办法
721
查看次数

标签 统计

haskell ×1

monomorphism-restriction ×1