List 列出对应元素对的半群映射的实例
我正在寻找最常见的Haskell库,它引入了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
[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)