如何将max函数给出的Ord数转换为小数。或者我如何将一个有2个约束(x::(Ord,小数a ) => a)的数字转换成一个整数?
不要担心RE
seemore :: (Fractional a) => RE b -> a -> a
seemore (a:+:b) x = seemore (a) (x) + seemore b x
seemore (a:|:b) x = max (seemore a y) (seemore b z)
where y = x
z = x
seemore (Symbol a) x = x
seemore Empty x = 0
seemore (Repeat(a)) x = 1/0
seemore (Plus(a)) x = 1/0在"seemore ::(Fractional a)“部分中,我需要将Ord a添加到该约束中,否则它将失败。但是,我遇到了一个小数和顺序的数字,尽管没有函数可以将这个数字转换为整数。理想情况下,我想要一个将顺序转换为小数的函数。
发布于 2019-04-15 05:41:22
理想情况下,我想要一个将顺序转换为小数的函数。
可以排序的东西比分数多得多,例如。"abcd" < "abce",但是什么是"abcd" / "abce"呢?
我遇到了一个小数和顺序的数字,尽管没有函数可以将这个数字转换成
。
如果您都知道是Fractional和Ord,那么如何知道存在合理的-> Integer转换呢?例如,考虑Data.Complex Double (基本上只是一个复数)-我们可以加、减、除偶数(即。这是Fractional),但是作为toInteger (1 + i)的答案,什么在数学上是有意义的?没有一个好的定义。
不清楚您到底想要实现什么,但是,我能想到的最接近的情况是,添加一个RealFrac a约束。这将为您提供所需的功能(例如,truncate、round、ceiling、floor),用于转换为Integral类型。
https://stackoverflow.com/questions/55679603
复制相似问题