小编zwe*_*men的帖子

常见LISP和堆栈中的数字类型边界在GHCI中流过

这里的第一个问题,以及普通LISP和Haskell的新手,请善待.我在Common LISP中有一个函数 - 下面的代码 - 用于判断三角形的面积是否为整数?(整数?).

(defun area-int-p (a b c)
  (let* ((s (/ (+ a b c) 2))
         (area (sqrt (* s (- s a) (- s b) (- s c)))))
    (if (equal (ceiling area) (floor area))
        t
        nil)))
Run Code Online (Sandbox Code Playgroud)

这应该使用Heron的公式来计算三角形的面积,给定三边的大小,并确定它是否是比较天花板和地板的整数.我们被告知等边三角形的面积永远不是整数.因此,为了测试函数是否正常工作,我使用参数运行它333.这是我得到的回报:

CL-USER> (area-int-p 333 333 333)
NIL
Run Code Online (Sandbox Code Playgroud)

完善!有用.为了进一步测试它,我用参数运行它3333.这是我得到的回报:

CL-USER> (area-int-p 3333 3333 3333)
T
Run Code Online (Sandbox Code Playgroud)

有些事情是错的,这不应该发生!所以,我尝试以下,希望等效的Haskell函数看看会发生什么:

areaIntP :: (Integral a) => a -> a -> a -> Bool
areaIntP a b c =
  let aa …
Run Code Online (Sandbox Code Playgroud)

haskell common-lisp arbitrary-precision

6
推荐指数
2
解决办法
238
查看次数

标签 统计

arbitrary-precision ×1

common-lisp ×1

haskell ×1