haskell

    3热度

    1回答

    如何从列表中的'aa'到'zz'获取字符串? 我知道这很明显,但不知道解决这类问题的恰当习惯。只要用具体的例子来展示这个想法,我就会找出其余的。 谢谢。 试图 (++) <$> ['a'..'z'] <*> ['a'..'z'] 但它不会编译。

    4热度

    2回答

    我有一个函数正在执行某些特定数据类型的工作。我想知道我能不能把它变成一般人。下面是它的标志性的通用版本: f :: Monad m => ((a -> b) -> c -> d) -> (a -> m b) -> m c -> m d 如果以上不能写,或许更受限制的版本可以? f2 :: Monad m => ((a -> a) -> b -> b) -> (a -> m a) -> m b

    3热度

    1回答

    鉴于年底追加: mangle :: String -> String ,我想要做的事,如: mangle xs = head xs -- works if you change typesig to [a] -> a 但: mangle xs = tail xs ++ head xs -- won't work at all! 会喜欢在列表末尾添加列表的第一个字符,切割第一个字符。

    -2热度

    1回答

    我是Haskell语言中的新成员,我想为现在正在处理的haskell程序创建一个makefile。但我不知道该怎么做。 谢谢:)

    -3热度

    2回答

    我得到了一个使用模式匹配定义的Haskell函数,但我不是很明白为什么它看起来像它的样子。 safeTail (x : xs) = xs 我不是特别明白在(x:xs),这是什么意思?

    1热度

    1回答

    我正在尝试为项目的Haskell分配运行ghci。然而,它给了我此错误消息: /usr/local/haskell/ghc-8.2.1-x86_64/lib/ghc-8.2.1/bin/ghc: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or d

    0热度

    1回答

    刚刚遇到了一件对我来说似乎很陌生的东西。反引号的功能类似于句法操作符。 applyOp :: Int -> (Int -> Int -> Int) -> Int -> Int applyOp x op y = x `op` y > applyOp 2 (+) 5 7 我很惊讶地看到这一点。我一直认为反引号需要包围一个运营商符号或标识符,而不是一个可以在执行过程中绑定到运营商的标识符。我

    -2热度

    2回答

    所以我需要在Haskell中创建一个Set数据类型。 所以,我的问题的第一部分,我需要定义 type Set a = ... 我把它设置为 type Set a = Set [a] 因为套装也只是α的名单,对不对? 或者,将正确的方式做到这一点是 type Set a = ([a]) 然后,在接下来的一部分,我需要实现的功能 setSuchThat :: (a -> Bool) ->

    2热度

    1回答

    我想通过具有给定出发点和目的地的图来获取所有可能路径列表的列表。 该图给出如下: data Node = N1 | N2 | N3 | N4 | N5 deriving (Show, Eq) neighbor :: Node -> [Node] neighbor N1 = [N2, N4, N5] neighbor N2 = [N1, N3] neighbor N3 = [N1, N4,

    4热度

    2回答

    给定某个数据类型的两个项t1 t2,是否有某种方法可以检查t1和t2是否以相同构造函数开始,而不在构造函数中进行穷举或模式匹配?就像如果我喜欢的类型要么是B,那么我想 checkConst (Left x) (Left y) = True checkConst (Right x) (Left y) = False ... 等实际上不这样做,模式匹配,并在某种程度上是普遍适用于其他类型的用1