标签: haskell-platform

用户输入内容时的Haskell ..总结txt文件中的数字

假设用户输入= 6000并且input.txt内的数字是= 5000.总和将是11000.屏幕上显示的数字和存储在文件中的值将被覆盖为11000.请帮助我,谢谢

import System.IO

menu :: IO ()
menu = do

handle <- openFile "input.txt" ReadMode  
          contents <- hGetContents handle 
      putStr contents
      hClose handle
      contents <- readFile "input.txt"
      print . sum . read $ contents
      putStr("\nThe amount of money that you want to deposit : ")
      y<-getLine
Run Code Online (Sandbox Code Playgroud)

haskell haskell-platform

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

Haskell中有8个皇后,未知错误?

我试图解决Haskell中的8皇后问题,而不使用任何高级功能,只有基本知识.我只走到这一步,但我得到一个我无法理解的错误.代码:

queens = [[x1,x2,x3,x4,x5,x6,x7,x8] | x1<-[1..8], x2<-[1..8],
                          x3<-[1..8], x4<-[1..8], x5<-[1..8],
                          x6<-[1..8], x7<-[1..8], x8<-[1..8],
                          safeH [x2,x3,x4,x5,x6,x7,x8] x1]
safeH xs e = if length xs == 1 then head xs 
                 else e /= safeH (tail xs) (head xs)
Run Code Online (Sandbox Code Playgroud)

并且错误消息是:

y.hs:1:42:
    No instance for (Num Bool) arising from the literal `1'
    Possible fix: add an instance declaration for (Num Bool)
    In the expression: 1
    In the expression: [1 .. 8]
    In a stmt of a list comprehension: x1 <- [1 .. 8]
[1 …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-platform

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

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
查看次数

如何在Haskell中将变量与数据类型进行比较?

data BTree a = Empty | Node a (BTree a) (BTree a) deriving Show

type Aluno = (Numero,Nome,Regime,Classificacao)
type Numero = Int
type Nome = String
data Regime = ORD | TE | MEL  deriving Show
data Classificacao = Aprov Int| Rep| Faltou deriving Show
type Turma = BTree Aluno 
Run Code Online (Sandbox Code Playgroud)

我有这个功能,计算有多少"Alunos"有Regime TE.

我的代码:

numeroT :: Eq  => Turma -> Int
numeroT Empty = 0
numeroT (Node (x,_,r,_) e d) = if (r==TE) then 1+((numeroT e)+(numeroT d))
                                      else (numeroT e)+(numeroT d) …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-platform

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

Haskell使用带卫兵的可能吗?

我正在尝试在Haskell中执行以下操作:

 someFunction :: [] -> Int
 someFunction list 
 let a
 | length list == 1 = 10
 | otherwise = 0
 b
 | length list == 1 = 10 
 | otherwise = 0
 in findValues (a+b)
Run Code Online (Sandbox Code Playgroud)

因此,a和b的值将取决于守卫的条件是否得到满足.这种语法一直给我错误,我不知道为什么.我是否需要使用where子句或是否有正确的"let"语法来实现我想要的?

谢谢你的帮助

haskell functional-programming haskell-platform guard-statement haskell-stack

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

如何在Haskell中重新实现"all"功能?

我需要定义一个函数all' :: ( a -> Bool ) -> [a] -> Bool来验证列表中的所有元素是否满足某个条件.

例如:all' ( <5) [1,2,3] = True, all' (>=2) [1,1,2,2,3,3]= False.

我的主要问题是我不知道如何处理函数的传输.

haskell haskell-platform

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

为什么 x*x where x = 6 在 Haskell 中失败?

我一直在阅读 Haskell 的功能性思考以学习 Haskell,我遇到了这一点。在书中它说 where 子句不限定表达式,而是限定整个右侧的定义。我不太明白这个意思。

haskell where-clause ghci haskell-platform

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

HASKELL - 更改类型

我需要创建一个f:: Log->[String] 能够做到这一点 的函数(((o, i ,d),s) = [(o, i ,d)]

type Log = (Plate, [String])
Run Code Online (Sandbox Code Playgroud)

type Plate = (Pin, Pin, Pin) type Pin = (Char, Int)

haskell haskell-platform

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

Haskell:使用展开定义地图功能

我有以下 Haskell 方法

unfold :: (a -> Bool) -> (a -> b) -> (a -> a) -> a -> [b]
unfold p h t x
    | p x       = []
    | otherwise = (h x):(unfold p h t (t x))
Run Code Online (Sandbox Code Playgroud)

我如何使用这个给定的展开方法定义常规的前奏图 fx 方法。

haskell functional-programming haskell-platform

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

在Haskell中获取系统时间的方法是什么?

我想在我的代码中使用系统时间来记录从用户界面捕获数据时的时间。如何使用Haskell获取系统时间

haskell haskell-platform template-haskell haskell-pipes haskell-stack

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

如何在Haskell中融合两个相同类型的枚举?

我对Haskell还是很陌生,我很好奇如何将两个合并Hand在一起,因此,第一只手放在第二只手的顶部。我希望它成为中缀运算符,即(<+)。这里有一些代码可以为您提供帮助。本质上,我要说的是我需要帮助才能以某种方式“伸出”两只手。

data Rank = Numeric Integer | Jack | Queen | King | Ace
            deriving (Eq, Show)

data Suit = Hearts | Spades | Diamonds | Clubs
            deriving (Eq, Show)

data Card = Card Rank Suit
            deriving (Eq, Show)

data Hand = Empty | Add Card Hand
            deriving (Eq, Show)

(<+) :: Hand -> Hand -> Hand
(<+) Empty Empty = Empty
(<+) h Empty     = h
(<+) Empty h     = h
(<+) h1 h2       = h1 ++ …
Run Code Online (Sandbox Code Playgroud)

enums haskell haskell-platform

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

如何在ubuntu linux系统中编译和运行haskell程序?

我是ubuntu平台的新手,我不知道如何在ubuntu系统中编译和运行haskell代码,haskell在我的教学大纲中,所以我必须为haskell配置我的系统.请告诉我方式.

linux ubuntu haskell haskell-platform linux-mint

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