标签: scheme

(fluxus)学习曲线

我试图通过fluxus获得一些乐趣,但它的手册和在线文档似乎都假设读者已经是一位从未听说过Scheme的专家网络程序员.因此,您会获得试图解释前缀表示法基础知识的段落,但假设您知道如何将声卡数据传输到程序中,或者设置并连接到OSC进程.

那里有没有相反的教程吗?IE,假设您已经掌握了Lisp/Scheme的功能,但在正确设置声源或OSC服务器之前需要一些指针?

除此之外,有没有人知道如何获得(例如)连接到(fluxus)的系统麦克风,或者如何让它从磁盘播放声音文件?

scheme osc

7
推荐指数
1
解决办法
785
查看次数

在方案中使用lambda而不是let

在SICP 1.2.1中,有一个函数可以生成一个有理数,如下所示:

(define (make-rat n d)
  (let ((g (gcd n d)))
    (cons (/ n g) (/ d g))))
Run Code Online (Sandbox Code Playgroud)

我只是好奇你如何使用lambda而不是let来实现相同的东西,而不需要两次调用GCD.我自己无法理解.

lambda scheme sicp

7
推荐指数
2
解决办法
5129
查看次数

MIT/Scheme是Windows下的一个简单编译器

是否有可能在Windows中使用mit方案作为简单的编译器(不运行Edwin)?

我想在我选择的wditor中编辑代码并编译它,但我没有找到并选择这样做.

当我执行...

mit-scheme < file.scm
Run Code Online (Sandbox Code Playgroud)

......我得到一个窗口:

"找不到选项的可读默认值--band.
在这些目录中搜索文件all.com:
c:\ local\mit-scheme"

windows scheme mit-scheme

7
推荐指数
2
解决办法
4554
查看次数

Scheme核心语言规范

我正在学习我的方式,我对语言的构建方式特别感兴趣.我试图找到一个很好的描述Scheme实现的核心语法.我对标准知之甚少,但我认为它们都包含宏系统.如果没有,我想阅读一个包含宏的标准(它们不可能在更简单的Scheme结构中实现,可以吗?).

有没有人对Scheme方言所需的最小语法有很好的参考?

只是一个更新:

我也偶然发现了这个问题:http://matt.might.net/articles/compiling-to-java/#sec1.如果你也添加define-syntax,delay那么它似乎是一个良好的开端.

在R5RS规范中,以下页面似乎是我正在寻找的:正式语法

lisp syntax scheme language-design

7
推荐指数
1
解决办法
1026
查看次数

是否存在*nix的平衡Scheme REPL?

我想要一个命令行(必须是一个命令行!)read-eval-print-loop Scheme解释器.但从表面上看,我想要一个解释器,至少可以突出括号,甚至可能保留历史,如GNU readline启用的程序.所有这些都在REPL级别.

这存在吗?它甚至可能吗?我是否必须将其破解为一些开源的REPL?我只是擅长电脑吗?我应该打扰吗?

我已经检查了其他问题,但我还没有找到我正在寻找的东西.我已经尝试过Racket和mzscheme,但它似乎没有做我想要的.现在我正在使用mit-scheme,但是这种平衡功能(就像他们在SICP演讲中使用的任何程序一样)几乎都是我想要的.

unix linux scheme command-line

7
推荐指数
1
解决办法
775
查看次数

Scheme:更改列表中元素的值

我讨厌使用SO作为查找简单函数的方法,但我真的找不到这样的函数:

给出一个列表(1 2 3 4 5),我想要相当于(PHP的,Perl的,Python的)

$a = array(1, 2, 3, 4, 5);   
$a[3] = 100;  
Run Code Online (Sandbox Code Playgroud)

结果如何(1 2 3 100 5)

谢谢!

lisp scheme list

7
推荐指数
3
解决办法
1万
查看次数

由关键字触发的Scheme宏,不是列表的头部

假设我想在除s-expression中第一项之外的其他内容上触发Scheme宏.例如,假设我想define用中缀样式替换:=,以便:

(a := 5) -> (define a 5)
((square x) := (* x x)) -> (define (square x) (* x x))
Run Code Online (Sandbox Code Playgroud)

实际的转变似乎非常简单.诀窍是让Scheme找到:=表达式并对它们进行宏扩展.我已经考虑过围绕使用带有标准宏的中缀语法的大部分代码,可能是:(with-infix-define expr1 expr2 ...)和标准宏遍历其主体中的表达式并执行任何必要的转换.我知道如果我采用这种方法,我必须小心避免转换实际上应该是数据的列表,例如引用列表和quasiquoted列表的某些部分.我想象的一个例子:

(with-infix-define
   ((make-adder n) := (lambda (m) (+ n m)))

   ((foo) :=
       (add-3 := (make-adder 3))
       (add-6 := (make-adder 6))
       (let ((a 5) (b 6))
           (+ (add-3 a) (add-6 b))))

   (display (foo))
   (display '(This := should not be transformed))
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是双重的:

  1. 如果我选择这with-infix-define条路线,我是否必须注意除引号和准引号之外的任何绊脚石?
  2. 我觉得有点像我正在重新发明轮子.这种类型的代码行走似乎正是标准宏扩展系统必须做的 - 唯一的区别是它们在决定是否进行任何代码转换时只查看列表中的第一项.有什么方法可以搭载现有的系统吗?

lisp macros scheme

7
推荐指数
1
解决办法
342
查看次数

怎么在DrRacket做一个powerset?

我正在使用DrRacket的列表缩写的开头语言,并希望递归地制作一个powerset但是无法弄清楚如何去做.我现在有这么多

(define
  (powerset aL)
  (cond
    [(empty? aL) (list)]
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很好.

scheme powerset racket

7
推荐指数
3
解决办法
7103
查看次数

Scheme Switch-Statement语法

在Scheme中创建switch语句最聪明的方法是什么?

我想检查一个值与其他几个值,如果一个结果为true,则整个函数应该为真,否则为false.我对方案中的语法不是很了解.

syntax scheme switch-statement

7
推荐指数
1
解决办法
2546
查看次数

我如何制作这款球拍代码DRYer?

我正在将一个Python脚本移植到Racket作为学习经验,我有这个功能:

(define (check-status)
    (define git [find-executable-path "git"])
    (define-values (ckot out in err)
        (subprocess #f #f #f git "checkout" "-q" "master"))
    (define-values (local lout lin lerr)
        (subprocess #f #f #f git "rev-parse" "@"))
    (define-values (remote rout rin rerr)
        (subprocess #f #f #f git "rev-parse" "@{u}"))
    (define-values (merge-base mbout mbin mberr)
        (subprocess #f #f #f git "merge-base" "@" "@{u}"))
    (display-lines (port->lines mbout))
   (define ports '(ckot out in err local lout lin lerr remote rout rin rerr merge-base mbout mbin mberr))
   (map (lambda …
Run Code Online (Sandbox Code Playgroud)

scheme racket

7
推荐指数
1
解决办法
225
查看次数