小编dfe*_*uer的帖子

这个Bool生产者对Maybe-producer函数是否出现在任何公共库中?

我发现自己想要这个小小的功能,但似乎并没有Data.Maybe.它在别的地方吗?

splat :: (a -> Bool) -> a -> Maybe a
splat c a
  | c a       = Just a
  | otherwise = Nothing
Run Code Online (Sandbox Code Playgroud)

haskell maybe

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

检查列表中的值以查看具有单个变量的Coprime

我在Haskell中实现此功能时遇到了一些麻烦.这是我到目前为止:

--Extend coprime to a function on lists:
--coprime_with n list = True exactly when n is coprime with
--every element of list.

coprime_with :: Integer -> [Integer] -> Bool
coprime_with a [] = False
coprime_with a (b:bs) = if ((coprime a b) == True) then 
                          (coprime_with a bs)
                        else False
Run Code Online (Sandbox Code Playgroud)

希望这不是太混乱.请不要只给我答案.只是让我知道我做错了什么以及如何解决它.谢谢!

编辑:好的,所以我想出来了!非常感谢您的回复.它非常快.我是Comp Sci专业,这是我的第一个学期.我的目标是实际学习,而不仅仅是通过它.感谢您的回复以及您的措辞.

我的问题是这样的:

coprime_with a [] = False
Run Code Online (Sandbox Code Playgroud)

什么时候应该这样:

coprime_with a [] = True
Run Code Online (Sandbox Code Playgroud)

现在它正常运作.Phew ...我觉得很愚蠢,我花了五个小时写这个功能,但至少我实际上学到了一些东西.再次感谢!

recursion haskell

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

不在haskell中编译printf

伙计们请告诉我为什么这不是编译

putStrLn("The average number of fans for the films of " ++ actor ++ " is : " ++ printf "%.2f\n" (show(countAveFans actor testDatabase))
Run Code Online (Sandbox Code Playgroud)

它很简单但我不能想为什么它不起作用.我尝试将整个事物转换为字符串并取出2小数点打印出来.谢谢

haskell

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

为 ghc 编译器指定自定义临时目录

我在运行 Ubuntu 14.04 LTS 的 Web 服务器上使用 ghc。由于某些限制,我无法提供对 /tmp 文件夹的写入权限。

删除对 /tmp 文件夹的权限后,ghc 编译器抛出此错误

/tmp/ghc12032_0: createDirectory: permission denied (Permission denied)
Run Code Online (Sandbox Code Playgroud)

有没有办法为 ghc 提供自定义临时目录?我没有找到任何可以帮助解决这个问题的编译器标志。每次调用 ghc 时,我都需要提供一个自定义目录。任何帮助,将不胜感激。

haskell ghc

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

Haskell函数重复

如果蜥蜴的尾巴被切断,再说两个再生长.如果我有下面的数据类型,我将如何编写一个函数来复制多少尾巴?

data Lizard = Tail
    deriving (Eq, Show)

duplicate :: Lizard -> Lizard
duplicate Tail?? = ???
Run Code Online (Sandbox Code Playgroud)

所以输入

> duplicate Tail
Run Code Online (Sandbox Code Playgroud)

应该给

> Tail Tail
Run Code Online (Sandbox Code Playgroud)

haskell

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

Haskell:只要有两个相邻的撇号,我怎么能分割一个字符串?

我正在做一些字符串工作,给我一些重复的单引号字符串,如:

all''your''base''belong
Run Code Online (Sandbox Code Playgroud)

我想在撇号之间分隔字符串以获取列表:

all'
'your'
'base'
'belong
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,它会修剪撇号的每个单词,除非它只在末尾有一个撇号,所以最终的结果是:

all'
your
base
belong
Run Code Online (Sandbox Code Playgroud)

我怎么能干净利落地去做呢?

string haskell split

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

制作类型多态

所以我正在定义一个基本列表的类型,我无法弄清楚如何使其变为多态.到目前为止我已经有了

module ListTup where
type ListTup = [(Char, String)]
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能使Char部分可以成为任何ei String,无论如何.可能吗?我尝试使用Maybe Type但是我的方式却犯了很多错误

haskell functional-programming

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

无法为新类型派生Eq或Show

我无法为newtype派生Eq和Show.

newtype Comp a = Comp {unComp :: a -> a } deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

当我尝试将此文件加载到我的堆栈ghci中时,它告诉我"没有实例(Show(a - > a))"

但完全相同的定义在另一个文件中加载正常.实际上以前的文件也存在问题但是它因为一些奇怪的原因而停止了.

haskell

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

如何反转列表列表?

我有一个[[a]]类型,例如它看起来像:

[[1,2,3],[1,2],[1],[]]
Run Code Online (Sandbox Code Playgroud)

但我想在Haskell中创建一个函数,它将使它看起来像:

[[],[1],[1,2],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)

我开始使用此函数,但它不适用于包含列表的列表:

myreverse ::[Integer] -> [Integer]
myreverse [] = []
myreverse (h:t)= myappend (myreverse t) [h]
Run Code Online (Sandbox Code Playgroud)

(myappend是我的本地函数,它附加了列表)

那么我需要在代码中进行哪些更改才能使其与包含其他列表的列表一起使用?

haskell

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

标准输入是如何实现的?

在任何编程语言中,当我们要求用户输入时会发生什么?

假设在 Haskell 中我们有以下代码。

name <- getLine
putStrLn ("Hey " ++ name)
 
Run Code Online (Sandbox Code Playgroud)

将如何实施 getLine会是什么样子?

假设是正确的,这以某种方式侦听键盘中断,当按下 Enter 键时,该函数停止执行?如果是这样,那么它如何等待?是否有某种while循环?

haskell operating-system

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