Jon*_*han 2 scheme loops racket
Scheme中是否有for
循环或for each
循环?
我一直在搜索,发现有一个关键字" every
",但我正在使用的方案编译器语言没有预先构建的这个函数.这是它想要做的,它可以在这里找到
(define (first-letters sent)
(every first sent))
> (first-letters '(here comes the sun))
(H C T S)
Run Code Online (Sandbox Code Playgroud)
我该如何重写这个every
功能?使用其他预定义的功能.我正在使用的语言是DrScheme - 编程语言要点(第3版)
我在DrScheme中尝试了所有预先安装的编译器,它们都没有可以编译该every
函数.
有任何想法吗 ?
你正在寻找map
,虽然你可能想知道Scheme也有for-each
.map
完全符合你的要求every
.它对列表中的每个项执行某些操作,返回新的结果列表.
你甚至可以说
(define every map)
Run Code Online (Sandbox Code Playgroud)
你可以first
通过写作来获得你的功能
(define (first symbol)
(string->symbol (string (string-ref (symbol->string symbol) 0))))
Run Code Online (Sandbox Code Playgroud)
不过,这是糟糕的Scheme风格.它看起来像60年代或70年代的古代Lisp,在字符串处于语言之前.无论如何,现在你可以说
(map first '(here comes everybody))
=> (h c e)
Run Code Online (Sandbox Code Playgroud)
for-each
对列表中的每个项目产生某种副作用:
(define initials (map first '(here comes everybody)))
(for-each display initials)
=> hce
Run Code Online (Sandbox Code Playgroud)