scheme - 带参数和不带参数的 lisp(方案)函数

标签 scheme lisp

我正在做一个作业,我必须构造一个函数,它接受一个参数并返回各种东西。但是,它也应该在没有参数的情况下进行评估时做一些事情,我不知道该怎么做。有谁知道如何实现这样的功能?我是否可以设置一个条件,如果使用参数对其进行评估,则执行 x,如果没有参数,则执行 y?

最佳答案

你可以使用表格

(define g (lambda args ...body...))

为此。 args 将绑定(bind)到函数调用中所有提供的参数的列表。您可以在函数的 ...body... 中对其进行分析并做出适当的决定。

一个著名的很好的例子是

(lambda args args)              

这个函数的名字是什么?

定义此类函数的另一种语法是

(define (g . args) args)

要定义一个函数,比如说,至少要有两个参数,你可以这样写

(define (foo a b . c) ...body...)

; (define foo (lambda (a b . c) ...body...))

其中 a 将是第一个参数,b 是第二个参数,而 c 将是所有其余参数的列表函数调用(可能为空)。

关于scheme - 带参数和不带参数的 lisp(方案)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48855892/

相关文章:

java - 如何在 Clojure 中使 Java 类不可变?

Lisp 列表迭代

recursion - 这个方案函数似乎是尾递归的,那么为什么我会出现堆栈溢出

list - 首先: contract violation error in racket/scheme for printing out a combination of list procedures

sorting - 排序多项式 Common Lisp

list - LISP:为什么 mapcan 不接受我的列表作为参数?

lisp - "A micro-manual for Scheme"?

string - 小写 Racket 中的整个字符串

方案空列表表达式

scheme - Scheme 中的函数,用于将列表中出现的所有元素替换为另一个元素