小编dmw*_*w64的帖子

将Word32函数应用于ByteString

我有一个字节串b与表单4*N(整数n)的长度,并且希望使用map具有功能f::Word32->Word32b(以便f被施加到" b[0..3]"," b[4..7]",等等).如何以高效(优雅)的方式完成这项工作?

haskell

6
推荐指数
1
解决办法
252
查看次数

符号名称作为类型构造函数

对不起,关于Haskell的新手问题......

使用中缀符号作为类型构造函数我该怎么办?我找到了下面这段代码,但ghc和ghci抱怨"意外类型`〜>'其中的类型变量"...

class Category (~>) where
(.) :: (a ~> b) -> (b ~> c) -> (a ~> c)
id  :: a ~> a
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?非常感谢提前!

haskell

4
推荐指数
1
解决办法
143
查看次数

类型 (.) .(.)

一个人如何可以推断的类型(.) . (.)(b -> c) -> (a -> a1 -> b) -> a -> a1 -> c

(我的想法和这显然是错误的是:该类型的(.)就是(t2->t3) -> (t1->t2) -> t1 -> t3,这应该是相同的(t2->t3) -> [(t1->t2) -> (t1->t3)](也使用[]{}.为便于阅读).因此,类型(.) . (.)应该是这样的{(b2->b3) -> [(b1->b2) -> (b1->b3)]} -> {(a2->a3) -> [(a1->a2) -> (a1->a3)]},需要(b2->b3)搭配[(a1->a2) -> (a1->a3)]...

但这永远不会导致所需的类型.

怎么了?

haskell types

4
推荐指数
1
解决办法
91
查看次数

模式匹配与构造函数

对于不同的数据构造函数,我有两个几乎相同的函数,并想知道是否有可能统一两者.一个简约的例子如下

f_maybe :: Maybe a -> a -> a
f_maybe (Just x) _ = x
f_maybe _        x = x
Run Code Online (Sandbox Code Playgroud)

data T a = T1 a | T2 Int | T3

f_t :: T a -> a -> a
f_t  (T1 x) _ = x
f_t  _      x = x
Run Code Online (Sandbox Code Playgroud)

是一种只定义一个由类型构造函数(Maybe或T)和数据构造函数(Just或T1)执行参数化的函数的方法吗?

haskell

4
推荐指数
1
解决办法
126
查看次数

如何将字符串列表传递给putStr

如何使用putStr和map输出字符串列表?我想做的事情如下:

s=["test1","test2"]
map putStr s
Run Code Online (Sandbox Code Playgroud)

但没有monad的经验,也不知道如何正确...

任何形式的提示都非常受欢迎!

monads haskell

2
推荐指数
2
解决办法
650
查看次数

一行中的多个案例

我有一个关于haskell的初学者问题:如何分离例如案例表达式的多个模式以便将它们分成一行?例如,我想写一个定义

f x = case x of Nothing -> ""
                Just _ -> "123"
Run Code Online (Sandbox Code Playgroud)

成一条线?如何才能做到这一点?是分离标志吗?非常感谢您的任何帮助!

haskell

2
推荐指数
3
解决办法
666
查看次数

奇怪的功能类型

关于Haskell中的类型,我有一个初学者的问题:有一个类似的函数:

f i xs = (sort xs) !! i
Run Code Online (Sandbox Code Playgroud)

如何在f0 xs = f 0 xs不明确使用xs的情况下定义函数?刚刚服用

f0 = f 0
Run Code Online (Sandbox Code Playgroud)

不起作用......

ghci向我展示了愚蠢的类型:
f :: Ord a => Int -> [a] -> a
f0 :: [()] -> ()
但是":tf 0"给出了f 0 :: Ord a => [a] -> a.

这是为什么?为什么我为f0获得此类型?为什么"f0"的类型和"f 0"的类型有什么区别?

非常感谢您提出任何建议

haskell types pointfree monomorphism-restriction

1
推荐指数
1
解决办法
120
查看次数

如何使用属于类型类的组件作为实例来创建元组

我有以下问题:我定义了一个类型类,并希望将此类的类型的元组声明为实例.但我不知道如何让GHC接受这个声明.这是一个非常简单的例子:

class Test a where
    elm :: a
Run Code Online (Sandbox Code Playgroud)

并且知道元组我想要做类似的事情

instance (Test a, Test b) => Test (a,b) where
    elm = (elm, elm) :: (a,b)
Run Code Online (Sandbox Code Playgroud)

(实际上,我想对与矢量空间相对应的更多花哨类型类做类似的事情.)

怎么做到这一点?在此先感谢您的任何建议!

haskell typeclass ghc

1
推荐指数
1
解决办法
133
查看次数