假设我在Scheme中创建了一个向量/数组:
(let* ((x #(1 2 3)))
(list-ref x 0)) ; returns error
Run Code Online (Sandbox Code Playgroud)
我可以在list-ref的位置使用什么语法或函数1?
编辑:我正在使用Script-Fu和GIMP 2.8,array-ref这似乎不起作用.
我想在拍,打印1,如果值写一个简单的程序a是> 1,版画0,如果价值a = 0和-1如果a < 0.我写了以下但看起来它没有照顾第三个条件.实际上,我没有包括第三个条件所以我不知道如何使用'if'子句检查所有三个条件.赞赏一点指导.
我是Racket的新手.我的计划是:
#lang racket
(define a 3);
(if (> a 0)
0
1)
-1
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我一直在教方案语言,在我的教科书中,我按下了以下表达式。我的问题是为什么要对数字“ 10”进行评估?有人可以向我解释吗?意思是创建什么本地环境以及创建到符号的绑定。我也知道每个lambda表达式都可以使用重写let。任何想法如何做到这一点?我将不胜感激任何帮助。
(let ((x 10))
(define y (lambda (x) x))
(define x 5)
(+ x (y x)))
Run Code Online (Sandbox Code Playgroud) (define self-add
(let ((x 0))
(lambda ()
(set! x (+ x 1))
x)))
Run Code Online (Sandbox Code Playgroud)(自我添加)=> 1
(自我添加)=> 2
(自我添加)=> 3
(自我添加)=> 4
(define self-add1
(lambda ()
(let ((x 0))
(set! x (+ x 1))
x)))
Run Code Online (Sandbox Code Playgroud)
(self-add1)=> 1
(self-add1)=> 1
(self-add1)=> 1
请告诉我如何理解上述两个功能之间的区别?非常感谢提前!最好的祝福.
我最近正在学习计划并且对一个没有标识符就无法评估宏的设计感到好奇,而lambda(程序)可以这样做.
例如,我可以使用匿名lambda:
((lambda x x) 1 2 3)
Run Code Online (Sandbox Code Playgroud)
似乎我必须使用以下语法定义宏:
(define-macro my-macro (lambda x x))
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么这样的方法会像这样直接创建一个宏:
(define my-macro (macro-lambda x x))
Run Code Online (Sandbox Code Playgroud)
我想如果将宏和lambda视为不同的类型,第二个可能更优雅.
我的问题是:
define-macro办?lisp compiler-construction macros scheme functional-programming