Haskell中如何显示函数值?新手求助测试same_ratio_dec_inf函数
如何测试
same_ratio_dec_inf函数 嘿,作为Haskell新手,搞懂这类带自定义类型的函数确实有点绕,我一步步给你讲怎么操作:
第一步:加载代码到GHCi
首先打开终端启动GHCi,然后加载对应的文件:
:load quadratic.hs
这样就能访问到same_ratio_dec_inf、Z、toZ和Sumbool这些定义了。
第二步:构造Z类型的输入参数
你已经注意到Z是自定义类型,不能直接传普通整数,得用toZ把Int转换成Z类型。比如:
toZ 0、toZ 5、toZ (-3)都是合法的Z类型值。
第三步:调用函数并查看输出
直接在GHCi里传入8个Z类型参数调用函数就行,比如用一组简单的测试值:
same_ratio_dec_inf (toZ 1) (toZ 2) (toZ 2) (toZ 4) (toZ 1) (toZ 1) (toZ 1) (toZ 1)
执行后,GHCi会直接返回LLeft或者RRight——这就是Sumbool类型的输出。
如果觉得LLeft/RRight不够直观,你可以写个小辅助函数把它转成易懂的字符串:
showSumbool :: Sumbool -> String showSumbool LLeft = "满足所有比例相等的条件" showSumbool RRight = "不满足比例相等的条件"
在GHCi里定义这个函数后,就可以这样调用:
showSumbool $ same_ratio_dec_inf (toZ 1) (toZ 2) (toZ 2) (toZ 4) (toZ 1) (toZ 1) (toZ 1) (toZ 1)
这样就能得到更友好的文字提示啦。
补充:理解函数逻辑
顺便提一下,这个函数的嵌套case其实是在依次判断一系列等式是否成立:
- 只要有一个
z_eq_dec(判断两个Z值是否相等)返回RRight(不相等),整个函数就直接返回RRight; - 只有前面所有等式都成立(返回
LLeft),才会最后判断zmult b h和zmult d f是否相等,返回对应的结果。
内容的提问来源于stack exchange,提问作者Ryan O'Connor
相关产品推荐
相关产品推荐

