123*_*36e 2 scheme clojure sicp
当一个负值传递给它的x参数时,它一直在唠叨cond如何在函数中返回正值.我的想法是两个负数乘以产生一个正数,但这看起来很混乱,因为在函数的任何地方似乎都没有出现乘法.
有人能给我详细解释为什么传递给x的负值会返回正值吗?
(def abs
(fn [x]
(cond (> x 0) x
(= x 0) 0
(< x 0) (- x))))
(abs -10) -> 10
Run Code Online (Sandbox Code Playgroud)
代码是SICP一书中abs函数的变体,但是用Clojure编写.
亲切的问候
当数字为负时(< x 0),我们否定它,(- x)得到相同幅度的正数.如果你愿意的话,可以将否定乘以-1乘以.
(doc -) ------------------------- clojure.core/- ([x] [x y] [x y & more]) If no ys are supplied, returns the negation of x, else ...