我刚开始使用Haskell并尝试先编写一些测试.基本上,我想定义一些函数,而不是调用此函数来检查行为.
add :: Integer -> Integer -> Integer
add a b = a+b
-- Test my function
add 2 3
Run Code Online (Sandbox Code Playgroud)
如果我在Hugs98中加载那个小脚本,我会收到以下错误:
Syntax error in declaration (unexpected `}', possibly due to bad layout)
Run Code Online (Sandbox Code Playgroud)
如果我删除最后一行,加载脚本然后在拥抱解释器中输入"add 2 3",它就可以了.
所以问题是:如何将函数调用放在与函数定义相同的脚本中?我只是想加载脚本,并能够检查它是否符合我的预期......我不想一直手动输入它们.
dav*_*420 12
其他人已经说过如何解决您的问题,但是对于测试,您应该使用QuickCheck或其他一些自动化测试库.
import Test.QuickCheck
prop_5 = add 2 3 == 5
prop_leftIdentity n = add 0 n == n
Run Code Online (Sandbox Code Playgroud)
然后,运行quickCheck prop_5和quickCheck prop_leftIdentity在拥抱会话.QuickCheck可以做的远不止这些,但这将帮助您入门.
(这是一个QuickCheck教程,但它已经过时了.有人知道一个涵盖QuickCheck 2吗?)
最初学者友好的方式可能是doctest模块.使用"cabal install doctest"下载它,然后将您的代码放入文件"Add.hs"并从命令行运行"doctest Add.hs".
您的代码应该如下所示,格式很重要:
module Add where
-- | add adds two numbers
--
-- >>> add 2 3
-- 5
-- >>> add 5 0
-- 5
-- >>> add 0 0
-- 0
add :: Integer -> Integer -> Integer
add a b = a+b
Run Code Online (Sandbox Code Playgroud)
HTH Chris
小智 3
做出顶层定义:
add :: Integer -> Integer -> Integer
add a b = a + b
test1 = add 2 3
Run Code Online (Sandbox Code Playgroud)
然后在 Hugs 会话中调用 test1。
| 归档时间: |
|
| 查看次数: |
2743 次 |
| 最近记录: |