- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在解决 Haskell Book 中的以下练习:
-- >>> flipMaybe [Just 1, Just 2, Just 3]
-- Just [1, 2, 3]
-- >>> flipMaybe [Just 1, Nothing, Just 3]
-- Nothing
flipMaybe :: [Maybe a] -> Maybe [a]
flipMaybe = undefined
elem
,
flipMaybeWithElem :: [Maybe a] -> Maybe [a]
flipMaybeWithElem ms
| Nothing `elem` ms = Nothing
| otherwise = Just (catMaybes ms)
misc.hs:86:5: error:
• No instance for (Eq a) arising from a use of ‘elem’
Possible fix:
add (Eq a) to the context of
the type signature for:
flipMaybe2 :: forall a. [Maybe a] -> Maybe [a]
• In the expression: Nothing `elem` ms
In a stmt of a pattern guard for
an equation for ‘flipMaybe2’:
Nothing `elem` ms
In an equation for ‘flipMaybe2’:
flipMaybe2 ms
| Nothing `elem` ms = Nothing
| otherwise = Just (catMaybes ms)
|
86 | | Nothing `elem` ms = Nothing
| ^^^^^^^^^^^^^^^^^
Eq a =>
对函数签名的约束,但我试图忠实于提供的函数 stub 。所以我重用了以前的功能,它确实有效:
flipMaybe :: [Maybe a] -> Maybe [a]
flipMaybe ms =
case (filter isNothing ms) of
[] -> Just (catMaybes ms)
_ -> Nothing
isNothing :: Maybe a -> Bool
isNothing Nothing = True
isNothing _ = False
mayybee :: b -> (a -> b) -> Maybe a -> b
mayybee b _ Nothing = b
mayybee b f (Just a) = f a
fromMaybe :: a -> Maybe a -> a
fromMaybe a maybe = mayybee a id maybe
catMaybes :: [Maybe a] -> [a]
catMaybes xs = map (fromMaybe undefined) (filter isJust xs)
elem
在没有类型约束的情况下工作?
filter
和
isNothing
对类型变量和
elem
没有限制有? (同样对于
isNothing
,类型变量甚至从未发挥作用,因为它被忽略了。)
> :t filter
filter :: (a -> Bool) -> [a] -> [a]
> :t isNothing
isNothing :: Maybe a -> Bool
> :t elem
elem :: (Eq a, Foldable t) => a -> t a -> Bool
Maybe
有一个
Eq
例如,但我猜编译器对
a
一无所知, 正确的?
最佳答案
Is it simply because
filter
andisNothing
have no constraints on the type variables andelem
has? (Also withisNothing
the type variable never even comes into play because it is ignored.)
elem
,一般来说,只有在
Eq a
时才有效很满意。您正在尝试在
[Maybe a]
上使用它, 和
Maybe a
有以下
Eq
实例。
instance Eq a => Eq (Maybe a) where
...
elem
看着你的
Maybe a
并说“我需要这个是
Eq
”。它看到上面的实例并说“对于
Maybe a
要满足
Eq
,
a
必须满足
Eq
,我不知道
Eq a
”。现在,在您的特定情况下,您只比较
Nothing
,所以
Eq a
instance 从未实际使用过。但是编译器没有足够的信息来知道这一点;它只知道
elem
需要
Eq a
,并且您没有为它提供该约束。
Eq
的情况下工作,你需要按照你已经做过的方式来做,要么使用显式递归,要么使用
filter
和
isNothing
.总之,我想你已经找到答案了,我只是重申一下你已经说过的话。
关于haskell - 为什么使用 `Eq a` 的解决方案需要 `elem` 约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519683/
有没有办法像这样输出一个数组: (elem,elem,elem) 例如,如果数组是[2, 3, 4],它会打印: (2,3,4) 最佳答案 puts "(#{array.join ','})" 这是一
我正在使用 g++ -g 编译我的代码,但我在标题中收到了错误消息。 这个错误与我做的一个函数有关,它的签名是: void addHead( Elem *&start , Elem *newStart
我使用的代码如 $('.elem',elem)、$('.elem',elem).tabs()。 $(".elem") 用于选择具有该类的元素。 但是逗号后面的是什么?它有什么用? 最佳答案 $('.e
你可能看过我之前关于 jQuery 升级的主题。所以最后我们将jQUery从1.4.2升级到1.6.1,但我们遇到了以下问题: elem is undefinedif ( elem.nodeName
typedef struct Element { struct Element *next; void *data; } Element; 在 pop 函数中,(!(elem = *s
我今天想知道 javascript 函数。我知道 jQuery 是一个 javascript 库,可以在带有点的元素上调用函数。 javascript 有时会做同样的事情(例如:.toFixed())
这个问题在这里已经有了答案: val() vs. text() for textarea (2 个答案) 关闭 5 年前。 这很奇怪。显然,我可以同时使用 .val() 和 .text() 来操作文
这个问题已经有答案了: Which way to test if an element is checked is better? .is(':checked') or .prop('checked'
所以,基本上我想检测用户何时将鼠标悬停在一个元素上(不同的 div 元素,不是父元素或同级元素),并且当发生悬停时,添加 :hover到我的另一个 div 元素。我的其他 div 元素状态的 :hov
Type Driven Development with Idris 一书介绍了这个练习: Define a possible method that fits the signature: two
在下面的代码中,两个选项似乎都分配了相同的资源 func Allocate(v interface{}) error { rv := reflect.ValueOf(v) if rv.
我有以下内容: elem :: Eq a => a -> [a] -> Bool elem _ [] = False elem x (y:ys) = x == y || elem x ys 我如何证明
每当我在本地系统中运行脚本时,游标都能正常工作,当我在docker中运行时,我获取了一个错误,所以任何人都会告诉我哪里出了问题,或者这个问题是不是包端的问题。。当我在当地跑的时候,我无头:假,当时无头
我有外部 RSS 提要填充以下重复出现的类 elements 。 {teaserImage} {teaserImage} {teaserImage} 我想简单地获取 :first 实例,该实例也是来自
使用 python 的 openpyxl 加载 xlsm 文件,然后在将一些数据添加到特定工作表中的特定 7 个单元格后保存/关闭它时,我收到警告。问题是我收到了一个“FutureWarning”,我
问题是将列表元素的连续副本打包到子列表中。 我不明白elem在这里使用单个元素, 例如, pack [1,1,2,2,3,4] 然后x将为 1 和 (head (pack xs))将是 1。 怎么能:
$(elem) 的用途是什么?我什么时候使用它? 我的 javascript 函数有问题,我有 3 个表单,这 3 个表单有时共享相同的字段类,因此当我尝试对其中一个表单进行验证时,即使它已正确填写,
我有一个相当简单的问题,我通常可以自己调试,但我现在似乎遇到了很多问题。 我正在创建一个链表数据结构,我做了两个函数,一个返回前面的 Elem,一个返回最后一个 Elem。问题是编译器说 Elem 没
我开始使用 ES6 粗箭头函数符号,我非常喜欢它。但是我对它的上下文有点困惑。据我所知,关键字 this inside fat arrow function 指的是函数当前运行的上下文。我想做一些简单
Go语言程序中对指针获取反射对象时,可以通过 reflect.Elem() 方法获取这个指针指向的元素类型。这个获取过程被称为取元素,等效于对指针类型变量做了一个 *操作,代码如下: packag
我是一名优秀的程序员,十分优秀!