Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 列出对应元素对的半群映射的实例_List_Haskell_Semigroup - Fatal编程技术网

List 列出对应元素对的半群映射的实例

List 列出对应元素对的半群映射的实例,list,haskell,semigroup,List,Haskell,Semigroup,我正在寻找最常见的Haskell库,它引入了[a]包装器,通过将mappend委托给它的元素来实例化半群,类似于: newtype SList a = SList { slist :: [a] } instance Semigroup a => Semigroup (SList a) where l1 <> l2 = SList $ foldl1 (<>) <$> transpose [slist l1, slist l2] newtype

我正在寻找最常见的Haskell库,它引入了
[a]
包装器,通过将
mappend
委托给它的元素来实例化
半群
,类似于:

newtype SList a = SList { slist :: [a] } 

instance Semigroup a => Semigroup (SList a) where
    l1 <> l2 = SList $ foldl1 (<>) <$> transpose [slist l1, slist l2]
newtype SList a=SList{SList::[a]}
实例半群a=>半群(SList a),其中
l1l2=SList$foldl1()转置[slistl1,slistl2]
例如,
SList[a,b,c]SList[d,e,f,g]
将计算为
SList[a,d,
b e,c f,g]


令我惊讶的是,我在Prelude和其他最受欢迎的图书馆中都找不到。这是为什么?

不是包装器类型,而是一个在常规列表上执行此操作的不同函数:。您可以直接调用它,也可以根据它实现SList:

import Data.Semialign (salign)
instance Semigroup a => Semigroup (SList a) where
    SList l1 <> SList l2 = SList (salign l1 l2)
导入数据。半对齐(salign) 实例半群a=>半群(SList a),其中 SList l1 SList l2=SList(salign l1 l2)