我才刚开始学习Haskell。我首先编写一个简单的函数,它接受两个值n和x,然后显示用它计算出来的两个整数值。
test n x = do
cell1 = round(n*n*x)
cell2 = n*n - cell1
print cell1
print cell2
但是它没有运行,并一直给我一个分析错误输入`=的错误。这是怎么回事?
我是Haskell的新手,因为我来自Java,所以觉得这一切都有点令人困惑。
我正在尝试实现一个函数,它在命令行中提示用户输入数字,然后执行与输入相关的函数,如果没有输入,则默认使用第一个函数。
我在if函数上遇到了问题,编译器一直给我错误,我不知道为什么。
main = do
putStr "Enter question number: "
xs <- getLine
if (xs == "3")
then
putStr "number of topping
import Control.Monad
import Data.Char
main = forever $ do
putStr "Give me some input: "
l <- getLine
putStrLn $ map toUpper l
我一直在通过学习haskell来学习Haskell。当我尝试运行这段代码时,它的行为并不像它应该的那样。
l
Give me some input: L
abc
Give me some input: ABC
当我运行它时,它不会先打印字符串,我可以输入。在提供了一些输入之后,在本例中是l,它返回给
以下代码拒绝编译。拜托,我已经和Haskell一起工作了1.5周了。所以只是个初学者。
name = (mod ( tag + x + (div ( 31 * m ) 12 )) 7 )
我对输入"=“进行了分析错误,它涉及到以下行:
name = (mod ( tag + x + (div ( 31 * m ) 12 )) 7 )
我不知道那一行出了什么问题。我一直在和其他语言打交道,但是Haskell有点特别。
刚刚开始使用Haskell,据说Haskell有不可变的变量。那么,为什么每次在GHCi提示符中输入一个表达式时,'it‘变量都会一直改变它的值?
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude> 7*2
14
Prelude> it
14
Prelude> "foo"
"foo"
Prelude> it
"foo"
Prelude>
我昨天刚升级到,发现我在终端上运行Haskell的方法已经失效了。
我过去常常在终端上运行Haskell,输入cd (the path where my .hs file is in),然后输入ghci,最后输入:l (.hs file name)
但它告诉我,-bash: ghci: command not found在输入ghci时。
我怎么能在El Capitan上运行Haskell呢?我不太熟悉电脑,只是偶尔为了好玩而学习一些算法,所以请避开技术术语,给我一些明确的步骤。
(我不知道它是否有用,我找到了这个,它表明没有必要重新安装整个平台,但我不知道如何从github下载和运行它附加的
我想在Haskell做以下几件事:
someFunction :: [] -> Int
someFunction list
let a
| length list == 1 = 10
| otherwise = 0
b
| length list == 1 = 10
| otherwise = 0
in findValues (a+b)
因此,a和b的值将取决于是否满足警卫的条件。这个语法一直给我带来错误,我不知道为什么。我需要使用where子句还是有一个正确的"let“语法来实现我想要的?
谢谢你的帮助
当我在网站上的Haskell的交互式shell中输入以下内容时,它工作得很好。
let squareMe x = x * x
let myFruit = ["banana", "apple", "kiwi", "orange"]
但是当我把它输入到一个源文件中并点击'Run‘时,我得到了这个错误:
<interactive>:3:1: error:
• Variable not in scope: main
• Perhaps you meant ‘min’ (imported from Pre
在Haskell中,我使用的是自定义数据类型Poly a = X | Coef a | Sum (Poly a) (Poly a) | Prod (Poly a) (Poly a) deriving (Show)。
因此,多项式(3+x)^2将表示为(Prod (Sum (Coef 3) X) (Sum (Coef 3) X))。
我很难将以这种方式输入的多项式转换为其标准形式的系数列表,我相信它应该是[9, 6, 1] as (3+x)^2 =9+ 6x + x^2。
我相信一个可能的解决方案是在我的多项式数据类型上实现一些数学函数,这样我就可以简化输入,但我一直没有成功做到这一点。还有别的
我一直在使用learnyouahaskell学习Haskell,但在我一直尝试的程序中遇到了问题。我想评估三个代表三角形边的Num输入,看看它们是否代表一个直角三角形。这是我到目前为止所知道的:
isRight :: (Num a) => a -> a -> a -> Bool
isRight x y z = (x^2 + y^2) == z^2
显然,该函数需要更长的时间才能支持不同的边顺序,但由于GCHI中的这个错误,目前我无法使用该函数:
Could not deduce (Eq a) arising from use of '==' from t
我一直在阅读“学习你一个Haskell”的书,我正试着把我的头脑集中在Haskell类型的类中。作为实践,我正在尝试创建一个简单的向量类型类。下面的代码片段给我带来了一些痛苦(导致我第一次向StackOverflow发帖):
data Vec2 a = Vec2 (a,a) deriving (Show, Eq, Read)
class Vector a where
(<*) :: (Num b) => a -> b -> a
instance (Num a) => Vector (Vec2 a) where
Vec2 (x,y) <*
我只是在玩Haskell monads,我一直收到一个我似乎无法修复的错误。我的代码段使用状态Monad将字符串中的前两个字符相加在一起,并将它们作为状态的一部分返回。我的“放”行一直给我一个错误:
* Non type-variable argument in the constraint: MonadState [a] m
(Use FlexibleContexts to permit this)
* When checking the inferred type
testH :: forall (m :: * -> *) a. MonadState [a] m =>
我一直在尝试从cabal安装,但是在构建它时出现了一个问题。显然,这个包混合使用了来自haskell98和base版本4.*的模块。这带来了一个问题,如果你在haskell98隐藏的情况下编译,那么一些模块就找不到了。然而,如果你在编译时暴露了haskell98,那么ghc就不能知道它是应该使用新的前奏还是haskell98前奏!
错误消息:
Main.hs:1:1:
Ambiguous module name `Prelude':
it was found in multiple packages: base haskell98-2.0.0.1
您如何解决这样的错误
我对Haskell并不熟悉,我试图在基数10中得到一个数字的长度,所以我创建了length‘函数:
length' :: (Integral a) => a -> a
length' a = length $ show a
但是Haskell给出了“无法匹配类型”错误,因为length返回Int。我不明白为什么它会给我一个错误,因为它是一个积分的实例.
大约4个月前,我开始在Haskell进行编程,现在我不得不处理Haskell的IO系统。我已经做了很多IO操作,也没有遇到任何我自己解决不了的问题,但是这次我搜索了将近两个小时,找不到一些关于readMaybe函数的信息。因此,我有以下问题要解决,我已经尝试了许多不同的方法来解决它,但是一直以来,我从编译器那里得到了相同的失败消息:
No instance for (Read a0) arising from a use of `readMaybe'
The type variable `a0' is ambiguous
我明白编译器想告诉我什么,但我不知道如何解决这个问题。我
我试图在Haskell中实现一个非常简单的排序算法。它编译,但一直给我不正确的输出。
这是代码
import Data.List
minimum' :: (Ord a) => [a] -> a
minimum' (x:xs) = foldr (\ x y -> if x <= y then x else y) x xs
qsrt :: (Ord a) => [a] -> [a]
qsrt [] = []
qsrt l@(x:xs) = minimum' l : qsrt xs
有什么想法吗?
我正在学习Haskell,并尝试使用精确的有理数。我有以下简单的Haskell代码:
import Ratio
x :: Rational
x = 5 % 2
当我在WinHugs中加载它时,一切都很好。但是,当我在ghci中加载它时,我会得到以下错误消息:
E:\devel\src\haskell\rational.hs:1:8:
找不到模块Ratio' It is a member of the hidden packagehaskell98.2.0.0.1‘。使用-v查看搜索到的文件的列表。
失败,模块加载:无。
我为什么要犯这个错误?
此外,谷歌在Haskell给我的
我试图用haskell编写一个小程序,它将整数作为输入,直到满足某个条件,比如P,然后打印出满足条件Q的所有元素的数量。我的代码如下
list = []
main :: IO ()
main = do
x <- getLine
read x : list
if (P) then putStrLine "length (filter Q list)" else main
但我得到了“非法逃逸序列”的错误。有人能给我一些建议如何解决这个问题吗?我想问题是我不能递归地调用主函数?提前谢谢。
我需要验证lambda表达式的类型:
我的方法给了我:
我试图在Haskell (拥抱)中定义它,如下所示:
h= \f x -> f (f x)
当我调用:类型comamnd时,它会给我:
(a -> a) -> a -> a
在Haskell中正确定义了mi函数吗?还是我的方法给了我一个错误的结果?
我已经开始学习Haskell了,我一直在读“为美好而学一个Haskell”。我读了半个模块的章节。一位朋友给我看了代码战,我决定把我学到的一些东西放到测试中。
我试图建立一个函数,它返回给定积分是否为4的幂的布尔值。这是代码。
module PowerOfFour where
isWhole n = fromIntegral (round n) == n
isPowerOf4 :: Integral n => n -> Bool
isPowerOf4 4 = True
isPowerOf4 x = if x < 4 then
False
else
if i
我正在学习https://learnhaskell.blogspot.com/2007/09/lesson-1-hello-world.html中的教程 我遵循了所有的说明,但在emacs上,当我键入C-c C-l时,我得到的是Run 'C-h f haskell-mode' for instruction how to setup a Haskell interaction mode 当我输入的时候,它会带给我一个没有多大帮助的页面。 我下一步该怎么做?除了删除用于apt的ghi, emacs的版本号之外,我完全遵循了教程中的步骤。 我的.emacs文件如下所示,与博客中的
为什么这会给我带来错误?我只是试着用这个测试来学习Haskell,在这里我只是在第二个输入中去掉元组。为什么这不编译?谢谢
test :: (Int,Int) -> [(Int,Int)] -> Int
test [] [] = []
test xs [] = []
test (x,xs) (y:ys) = test (x,xs) ys
谢谢你,卡西根一式指出了第一个错误。如果我们有
test :: (Int,Int) -> [(Int,Int)] -> Int
test xs [] = []
test (x,xs) (y:ys) = test (x,xs)
我一直在尝试使用Haskell编写一个简单的映射函数,我遇到了以下问题:
data Tree a = Leaf a | Node (Tree a) (Tree a) deriving(Show)
let g (Leaf l) = Leaf(l+1)
let map g (Leaf l) = g(l)
let lf = (Leaf 2)
对于g(lf),输出是Leaf 3,但对于map g lf,我得到了以下错误:
Couldn't match type `Integer' with `Tree a0'
Expected type: Tree (Tree a0)