function - scheme2lisp::define 函数并将其作为参数传递

标签 function functional-programming lisp scheme

我需要将一些代码从 Scheme 翻译成 Common Lisp。现在,我有这样的东西:

(defun sum (term a next b)
  (if (> a b)
    0
    (+ (term a) (sum term (next a) b))))

(defun sum-int (a b)
  (defun (ident x) x)
  (sum ident a 1+ b))

但它会产生错误。

*** - DEFUN: the name of a function must be a symbol, not (IDENT X)

请帮帮我。 谢谢

更新 原代码:

(define (sum term a next b)
  (if (> a b)
    0
    (+ (term a) (sum term (next a) b))))

(define (sum-int a b)
  (defun (identity x) x)
  (define identity a 1+ b))

最佳答案

(defun sum (term a next b)
  (if (> a b)
      0
      (+ (funcall term a) (sum term (funcall next a) next b))))

(defun sum-int (a b)
  (flet ((ident (x) x))
   (sum #'ident a #'1+ b)))

只是另一个 CL 使用 FLET(未经测试)。

关于function - scheme2lisp::define 函数并将其作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932441/

相关文章:

load - 在 Common Lisp 中加载文件时读取下一行

lisp - 如何使 lisp 中的列表输出更好?

javascript - 在 JavaScript 中递归地转换对象

c++ - 递归函数问题和查找所有可能的路径

javascript - 如果函数和参数均为 “wrapped”,如何使用 lift

javascript - 如何使用 FP 的 compose() javascript 将两个函数组合成一个函数?

c - 当我以数组名称作为参数调用函数时会发生什么?

Javascript:导出带有引用函数的对象的数组

haskell - 是否有用于多次应用转换的标准高阶函数?

programming-languages - 学什么? Lisp 或 OCaml 或...?