0

我正在尝试使用给定的原型在 Haskell 中创建此函数:

The function "foldMap Conjoined" over a list of functions returning Bool values
    should produce a function over the same input type that returns True if all of
    the functions in the list return True for the given input, and False if at
    least one of the functions returns False for the given input. (If the list is
    empty, then all of the zero functions in the list return True.)> 

newtype Conjoined a = Conjoined { getConjoined :: a -> Bool }
       deriving Generic
    
instance Monoid (Conjoined a) where
       f <> g = Conjoined (\x -> True)

f <> g 行是我的部分代码的开始。使用该行,该函数通过了关联性测试,但没有产生正确的结果

4

1 回答 1

0

如果第一个和第二个函数都返回 True,则可以使用 (&&) 创建一个返回 True 的新函数。然后 mempty 是一个 [Join] 函数,它对所有输入都为 True:来源:stackoverflow.com/q/62982832/67579

采用相同的逻辑并将其应用于这个“联合”幺半群

   "instance Monoid (Conjoined a) where
        Conjoined f <> Conjoined g = Conjoined (\x -> f x && g x)
        mempty = Conjoined (const True)"
于 2020-07-22T10:55:28.293 回答