小编bhe*_*ilr的帖子

Haskell多线互动模式

在python中,有许多IDE可以让你这样做.

>>> if (a==5):
      print "Yes"
else:
      print "No"
Run Code Online (Sandbox Code Playgroud)

但是在haskell的GHCi中:

Prelude> do

<interactive>:2:1: Empty 'do' block
Run Code Online (Sandbox Code Playgroud)

这是行不通的.是否有任何IDE允许您以交互模式执行多行命令.

注意:我知道:{和:}命令,但您输入后无法编辑上面的行.

ide haskell ghci

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

Haskell Monad相当于

如果我们选择它们,两个函数是否等效monadPlusSDif,Maybe作为数据类型MonadPlus

tdif :: Int -> Int -> Maybe Int
tdif x y
    | y == 0 = Nothing
    | otherwise = Just (div x y)

monadPlusSDif :: MonadPlus m => Int -> Int -> m Int
monadPlusSDif x y = guard (y /= 0) >> return (div x y)
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming haskell-platform maybe

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

为什么我有类型错误?哈斯克尔

applyAll :: [[a] -> [a]]  -> [a] -> [a]
applyAll [] [] = []
applyAll [] a = a   
applyAll (f1:fl) a = applyAll( (drop 1 fl)(f1 a))
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误

Expression     : drop 1 fl (f1 a)         
Term           : drop         
Type           : Int -> [e] -> [e]         
Does not match : a -> b -> c -> d          
Run Code Online (Sandbox Code Playgroud)

我想做那样的事

applyAll [tail, tail, tail, tail] [1,2,3,4,5] = [5],         
applyAll [(map (* 2)), (map (+ 1))] [1,2,3,4,5]) = [3,5,7,9,11]
Run Code Online (Sandbox Code Playgroud)

haskell types list map

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

通常在列表中查找最大项目

在Haskell中,我写了一个函数,给定a List of a,返回Maybe a.

max' :: Ord a => [a] -> Maybe a
max' []     = Nothing
max' (x:xs) = Just $ foldr (\y acc -> if (y > acc) then y else acc) x xs
Run Code Online (Sandbox Code Playgroud)

我怎么能在Scala中写这个?我不确定OrdScala 中的等价物.

haskell scala max

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

如果值为true,则haskell中列表上的fold函数返回true

我试图获得一个带有foldr的函数来处理具有3> 4,...等值的列表,如果列表中的值为true,则返回True.我到目前为止尝试过这样做:

fold :: [Bool] -> Bool
fold xs = foldr (x==True) xs
        where x:xs
Run Code Online (Sandbox Code Playgroud)

haskell

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

在Haskell中对列表中的元组进行排序

因此,在互联网上搜索了一段时间以获得一个很好的解决方案后,我已经到了路的尽头.

我目前面临着一些关于文本处理的Haskell问题,而且大部分问题一直都很顺利.但是,我现在坚持在列表中排序元组.

基本上,我有一个元组列表,所以有类似的东西

list = [("hey","there"),("there","hey"),("bears","are")]
Run Code Online (Sandbox Code Playgroud)

我现在的目标是在内部对元组进行排序,以便我收到

list = [("hey","there"),("hey","there"),("are","bears")]
Run Code Online (Sandbox Code Playgroud)

然后,我将运行一个group $ sort list以便能够检索有多少等效对的计数.换句话说,("hey,"there")相当于("there","hey").

到目前为止我尝试过的是使用地图功能.但是,似乎你不能使用map函数运行列表操作,但至少要尝试理解我的最终目标是什么,这是我到目前为止所取得的成就.

countup tuples =
    let final =
        sort sorted_internal where
            sorted_internal = map (\x->(sort x)) tuples
    in map (\x->(head x, length x)) final
Run Code Online (Sandbox Code Playgroud)

sorting haskell list

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