首页 文章
  • 6 votes
     answers
     views

    要求Racket中的模块不提供标识符

    假设我有一些文件 a.rkt : #lang racket (define a 12) 我现在想要编写一些测试用例,使用需要 a.rkt 的文件 b.rkt : #lang racket (require "a.rkt") a 我有没有办法让 b.rkt 识别 a.rkt 中定义的标识符,而不必从第一个文件中 provide ? (理想情况下,根本不需要更改第一个文件 . ...
  • 120 votes
     answers
     views

    除了“符号”之外,为什么Clojure还有“关键字”?

    我从其他方面了解其他Lisps(特别是Scheme) . 最近我一直在阅读Clojure . 我看到它既有"symbols"又有"keywords" . 符号我很熟悉,但没有关键字 . 其他Lisps有关键字吗?关键字如何与除了具有不同符号(即:冒号)之外的符号不同?
  • 3 votes
     answers
     views

    错误:无法在null语法环境中绑定名称

    我目前正在阅读sicp书的练习1.3 . 这是问题的描述: 定义一个过程,该过程将三个数字作为参数,并返回两个较大数字的平方和 . 我尝试使用以下代码解决它 (define (square x) (* x x)) (define (sq2largest a b c) ((define large1 (if (> a b) a b)) (define ...
  • 0 votes
     answers
     views

    计算第N个根的方案语言结构

    Scheme具有本机函数(sqrt x),显然,它找到变量x的平方根 . 是否有任何本机函数或结构可用于确定参数是否满足分数的谓词? 对于x,我需要确定它是否是任何分数,比如3/2,这样在我的递归指数函数中,我可以相应地处理它 . 我只需要确定我是否有整数或分数 .
  • 3 votes
     answers
     views

    为什么我的立方根算法错了?在SICP练习1.8

    >已修复, 这不是一个庞大的数字,只是两个巨大数字的一小部分,所以我得到了一个误报 . 算法是正确的;现在修改最后一个输入参数,解释器将其检索为十进制逗号,并且看起来像它一直是的小数字 . 我正在从SICP做练习1.8,当我评估算法时,Scheme的解释器̵f̵̵r̵̵e̵̵e̵̵z̵̵e̵s̵会返回错误的答案 . 有人知道为什么吗? 牛顿立方根的方法基于如下事实:如果y是x的立方根的...
  • 0 votes
     answers
     views

    MIT Scheme Int VS Float

    我一直在使用mit-scheme来测试练习中的SICP . 对于练习1.8,您的任务是编写一个类似于给定平方根函数的立方根函数 . 我的解决方案如下:但是,我注意到在cube-root函数中,第一次调用cube-iter . 如果第一个参数是1,则函数返回一个非常大的整数,如果它是1.0,它将使用mit-scheme返回预期结果 . 使用scm解释器时,使用1和1.0时输出之间没有区别 . 我的印...
  • 4 votes
     answers
     views

    如何在编译环境中使用鸡蛋?

    这是我的previous question的后续行动 . 不幸的是,似乎鸡计划默认情况下不支持复杂数字,而是提供可以安装的鸡蛋 numbers 鸡蛋 . 我已经通过 chicken-install numbers 安装了这个鸡蛋,我可以在解释的环境中加载它 . 我可以通过调用 use 来做到这一点;可以在REPL中手动操作,也可以通过 csi 将我的 .scm 文件作为脚本运行 . 例如,这个脚本...
  • 1 votes
     answers
     views

    在Scheme中传递 Value 混淆

    请考虑从SICP获取以下过程: (define (make-withdraw balance) (lambda (amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) ...
  • 1 votes
     answers
     views

    为什么我的Scheme Cube-Root程序中出现此错误?

    所以我正在通过SICP,其中一个问题(1.8)是使用Newton-Raphson method实现类似于平方根过程的立方根程序 . 我编写了程序并尝试执行它,但得到了这个错误: *: number required, but got #<Closure> [cubert, cubeiter, cubeiter, good-enough, cube, sq, *] 这是我的代码: (de...
  • 3 votes
     answers
     views

    如何编译多个Chicken Scheme文件?

    我需要编译一个包含多个源文件的Chicken Scheme项目,但是我遇到了错误 . 根据the manual和this SO answer,我需要在我的来源中添加 (declare) . 为什么编译器不能只看到我正在导入其他源代码超出我,但是meh . 问题是,即使我把 (declare) 放入,编译器也会抱怨 (import) 和 (use) . infinity.filesystem.s...
  • 4 votes
     answers
     views

    Scheme中的“up”或“down”结构是什么?

    很早就在功能微分几何中,Sussman&Wisdom开始使用"up structure" ......但我对这可能是什么没有任何想法 . (print-expression ((compose P2-chi R2-chi-inverse) (up ’x0 ’y0))) 我无法在文本的任何地方找到这个结构的描述,我无法在Scheme的标准版本或语言文档中找到它........
  • 11 votes
     answers
     views

    词汇与动态范围在SICP的环境评估模型方面

    在SICP的Section 3.2.2中执行以下代码 (define (square x) (* x x)) (define (sum-of-squares x y) (+ (square x) (square y))) (define (f a) (sum-of-squares (+ a 1) (* a 2))) (f 5) 以this diagram解释 . 每次应用函数时,都...
  • 2 votes
     answers
     views

    为什么scheme找到一个用“define”而不是“let”定义的变量

    所以这是关于方案变量绑定的问题 . 假设我有以下功能: (define undefinedTest (lambda (y) (list x y))) 当在Guile-Scheme 2.0.3中运行时,这将警告x是未绑定的变量 . 如果我然后执行以下语句 > (let ((x 'something)) (undefinedTest 'else)) 我将得到一个错误和调试它的选项 . 但是,...
  • 3 votes
     answers
     views

    方案的简单库机制 - 导入实现

    我实施了一个基本方案(想想SICP) . 现在,我想添加一个基本的导入/库功能,但是无法想出办法 . 到目前为止,我认为两种方法都存在同样的障碍 . 在旧的SICP(第一版)书中有一个make-environment / package章节,也讨论了here . 这将返回一个新环境 . 我想打个电话 (import lib) 其中lib提供环境或过程名称和过程列表 . 我的问题是如何使用库提供的...
  • 2 votes
     answers
     views

    方案环境模型关闭问题

    SICP 3.2引入环境模型来取代替代模型 . 我在学习这部分时做了以下测试: (define a1 1) (define (f1) a1) (f1) ; return 1 (define (f2) (define a1 2) a1) (f2) ; return 2 (define (f3) (define a1 2) (f1)) (f3) ; return 1,not 2 最后一个表达超出了我...
  • 1 votes
     answers
     views

    方案:附加到当地环境

    比如说,我想在Scheme中实现“声明式”对象系统,方法是定义对象符号,然后将方法和字段附加到该对象 . 在这样做的时候,我想利用这个对象的本地环境来正确绑定它们在方法中的字段(稍后会添加),例如(一个非常“混乱”的例子): (define myobj (begin (define x 5) ; some local field (hard-coded for example) ...
  • 1 votes
     answers
     views

    词汇范围和共享对象

    考虑SICP中的 生产环境 帐户程序 . (define (make-account balance) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) &qu...
  • 1 votes
     answers
     views

    将值绑定到环境模型中的帧

    我对评估的环境模型如何运作有点困惑,并希望有人可以解释 . SICP说: 环境模型指定:要将过程应用于参数,请创建一个包含框架的新环境,该框架将参数绑定到参数的值 . 此框架的封闭环境是过程指定的环境 . 现在,在这个新环境中,评估过程体 . 第一个例子: 如果我: (define y 5) 在全球环境中,然后打电话 (f y) 哪里 (define (f x) (set! x 1)) ...
  • 105 votes
     answers
     views

    Clojure,Scheme / Racket和Common Lisp有什么区别?

    我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题 .
  • 4 votes
     answers
     views

    方案:何时使用let,让*和letrec? [重复]

    这个问题在这里已有答案: Confused by the difference between let and let* in Scheme 2个答案 let,let *和letrec有什么区别? 请给出详尽的解释和例子 .
  • 1 votes
     answers
     views

    创建一个可从csi访问的库

    假设我在_1280169中有一个库foo,就像这样: (module foo (bar) (import scheme) (define (bar arg) (+ 5 arg))) 我有一个程序 program.scm : (use foo) (display (bar 2)) 现在,我编译foo并使用 csc -J -library foo.scm 生成导入库,然后使用 ...
  • 2 votes
     answers
     views

    鸡计划的发电机

    此代码在codepad.org提供的Racket Scheme中工作,在显示消息"unexpected return"之前在连续行上显示数字1,2和3,但是相同的确切代码在ideone.com使用Chicken Scheme失败,我不明白错误消息鸡计划提供 . 如何使其与鸡计划一起使用? (define-syntax define-generator (lambda (x)...
  • 3 votes
     answers
     views

    鸡计划中的复数

    为什么在鸡计划中默认(即没有加载扩展名,例如数字egg)定义了程序 real-part ,_ imag-part , angle , magnitude , complex? 但是没有 make-rectangular 和 make-polar ?如果我不能创建复数,我该怎么办呢?
  • 0 votes
     answers
     views

    鸡计划编译器(csc)错误

    我有一个mingw64和鸡计划的全新安装,但每当我尝试从命令行使用 csc 编译文件时,我得到以下内容: error: shell command terminated with non-zero exit status 1: "gcc" "foo.o" -o "foo" -wl,--enable-auto-import -Lc:\chi...
  • 0 votes
     answers
     views

    在CHICKEN-Scheme中动态加载编译库

    我想知道,如果可能的话,在CHICKEN-Scheme中动态加载编译代码的最佳方法 . API状态 load 仅加载源文件 . 具体来说,我动态加载代码的目标是能够覆盖以前定义的函数 . 那就是库1中的 foo 将被库2中的不同 foo 替换 .
  • 0 votes
     answers
     views

    编制Chicken Scheme egg“查找表”的问题

    我正在尝试 statically compile 并链接鸡计划计划,这一个鸡蛋给我带来了一些麻烦 . 我得到了同样的错误,但有更多信息,当我在repl上尝试时;所以这里: > chicken-install >/dev/null -retrieve lookup-table > csi ./lookup-table/lookup-table.scm -I ./lookup-tab...
  • 2 votes
     answers
     views

    如何编译这个Chicken Scheme代码?

    显然我的previous question太广了 . 所以这里的问题是再次,简化,以及示例源代码 . 我正在尝试编译包含多个文件的Chicken Scheme项目: test-a.scm: #!/usr/bin/csi -script (declare (unit test-a)) (declare (uses test-b)) (load "test-b.scm") (u...
  • 0 votes
     answers
     views

    Chicken Scheme中的错误处理

    我正在制作基本的端口扫描仪 . 当我连接到一个关闭的端口时,我正在尝试打印“关闭”,当我连接到一个打开的端口时,我打算“打开” . 现在我这样做: (condition-case (tcp-connect (list-ref host 0) port) [(exn) (print "closed")] ['nil (print "open")...
  • 1 votes
     answers
     views

    在鸡计划中安装鸡蛋

    在MSYS2中,我尝试用::: chicken-install http-client 我收到如下错误: "c:\msys64\usr\local\bin\csc" -feature compiling-extension -setup-mode mathh.scm -shared -optimize-leaf-routines -inline -output-file...
  • 1 votes
     answers
     views

    在Scheme中检查对象是否为“listdiff”

    listdiff是一对谁的车是L,其cdr是eq?到L,或到(cdr L),或到(cdr(cdr L)))等.listdiff的cdr不必是列表;它可能是任何物体 . listdiff D表示(cd D)之前的(车辆D)的前缀 . 例如,假设ils是不正确的列表(e i o u.y) . 然后(cons ils)返回一个空的listdiff,(cons ils(cdr(cdr ils)))返回...

热门问题