的基本算术函数用于作业分配,子任务是使算术函数(+)
,(-)
,(*)
和div
可显示。显示作为字符串
我们解决了剩余的任务,但是我们被困在这里。现在我们正在使用the solution to this question here操作来区分:
showOp op = case op 3 3 of
6 -> "plus"
0 -> "minus"
9 -> "times"
1 -> "divide"
_ -> "undefined"
然而,这给我的印象样的丑陋的东西像showOp (\a b -> a * 3 - y)
产量"plus"
。
有什么办法可以更好地区分操作员吗?
我们使用winhugs atm和相应的开关-98 +o
以便能够使用所需的扩展。
编辑: 按照要求,实际分配与阵列(特别是Array Int (Int -> Int -> Int)
)做。它与生成满足特定条件的操作符数组有关。
的分配状态:
使数据类型
Array Int (Int->Int-Int)
的Show
一个实例。前面练习中的算术运算应表示为“加号”,“减号”,“时间”和“div”。
提前THX任何帮助
我会很高兴地看到从分配一些情况下,因为制作功能本身显得似乎是作业的一个奇怪的要求。 – shang 2013-05-03 09:13:05
如果明确要求Int-> Int-> Int',那么比起这样一个启发式的不安全案例表,你能做的事情要好得多。 (如果一般的'(数字a)=> a-> a-> a'被允许的话,这将有可能使[更好](https://github.com/leftaroundabout/Symbolic-math-HaTeX)。 ) – leftaroundabout 2013-05-03 09:34:03
我认为这是一样好,你会看到 - 我认为这是绝对[不可能](http://stackoverflow.com/questions/4328620/comparing-functions-in-haskell)检查平等功能,这意味着您需要检查操作等同性。您可以扩展测试范围以捕获更多未定义的函数,但不多。 – isturdy 2013-05-03 15:35:47