如何隐藏[](或[]的Monad实例?

Ben*_*ach 6 import monads haskell list

我正在尝试完成Typeclassopedia中的一些练习,但是我无法定义我自己的Monad实例[],因为我似乎无法隐藏它.我能够Maybe有效地隐藏,但当我试图隐藏时[],我收到此错误:parse error on input '['

我正在使用这行代码导入:

import Prelude hiding (Maybe, Just, Nothing, [])
Run Code Online (Sandbox Code Playgroud)

更改[]([])也无法解决此问题.

我不知道该怎么做.任何帮助都会很棒!谢谢!

alt*_*ive 10

您可以尝试-XNoImplicitPrelude,但最简单的可能是定义您自己的List类型,语义相当于[]并实现此类型的实例.

隐藏实例是不可能的,因为甚至import Prelude ()会导入实例.

  • 如果您首先定义自己的`foldr`,那么为您自己的`List`类型实现便利函数很容易.假设你的构造函数被称为`Cons`和`Nil`:`map f = foldr(\ x xs - > Cons(fx)xs)Nil`; `append xs ys = foldr Cons ys xs`; `concat = foldr追加Nil`; `concatMap f = concat.地图f`. (2认同)