小编use*_*598的帖子

从列表中删除具有相同值对的元组

我想删除所有具有相同值的元组,例如[(1,1), (2,3), (2,2), (3,4)]我想要的[(2, 3), (3, 4)].我在Haskell工作.这是我试过的:

unique [] = []
unique (x:xs) = if (fst x) == (snd x) then unique (xs) else x:[]
Run Code Online (Sandbox Code Playgroud)

输出是:

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

我很困惑,为什么(3, 4)没有出现.

haskell functional-programming tuples

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

如果语句使用IO Int haskell

我有一个游戏,用户与计算机,我想随机选择谁开始游戏.我有

a = getStdRandom $ randomR (0, 1)
Run Code Online (Sandbox Code Playgroud)

这得到一个随机数0或1.但它是一个IO Int,所以我不能有一个if语句将它与一个数字相比较

if a == 0 then userStarts else computerStarts 
Run Code Online (Sandbox Code Playgroud)

我试图比较IO IntIO Int和它不工作了,我也试着

将IO Int转换为Int

我对Haskell很新,不知道如何处理这个问题.要求的代码详情:

randomNumber =  getStdRandom $ randomR (0, length symbols - 5) --  this will be 0 or 1
randomNumber2 =  getStdRandom $ randomR (0, length symbols - 5) -- according to 
                     -- the solution I need another function returning IO int.

a = do
   x <- randomNumber
   randomNumber2 $ pureFunction x …
Run Code Online (Sandbox Code Playgroud)

random haskell functional-programming io-monad haskell-stack

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

根据Haskell中的布尔条件执行多个语句

我是Haskell的新手,如果几个布尔值为true,我将尝试执行多个语句。我使用了警卫队尝试了它,但它只执行了第一条正确的语句,然后停止了。我希望它执行所有正确的示例,例如f 5执行gx,然后还执行h x。我尝试使用if语句,但不能。

f x

  | x < 10 = g x

  | x < 15 = h x

  | otherwise = m x
Run Code Online (Sandbox Code Playgroud)

这只是一个简化,实际上我有一个不同的程序。情况不同,我只是想像其他编程语言一样具有多个if语句。因此,在此示例中,如果x <10,则执行某项操作;如果x <15,则也执行此操作。

haskell functional-programming guard-statement

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