首页 文章
  • -1 votes
     answers
     views

    球拍程序无法正常工作

    我做了一个函数,它采用列表和列表的两个元素 . 如果第二个参数出现在第三个参数之前的list参数中,它应返回#t: 如果任何假定的元素根本没有出现,该过程也应该返回#f . 这是我到目前为止所得到的: (define (before-in-list? lst a b ) (cond ((empty? lst ) #f) ((eq? (car lst ) a) ( map b (cdr ...
  • 2 votes
     answers
     views

    在Scheme中使用call-with-current-continuation时的无限循环

    我一直在阅读关于 call-with-current-continuation ,尤其是在Scheme中,并阅读了许多网站上的各种文章 . 但是,我仍然不明白使用 call-with-current-continuation 时控制流如何工作 . 例如,给定下面附加的代码,如何调用continuation以及何时调用它,控件如何流经此过程的主体? (define call/cc call-with...
  • 120 votes
     answers
     views

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

    我从其他方面了解其他Lisps(特别是Scheme) . 最近我一直在阅读Clojure . 我看到它既有"symbols"又有"keywords" . 符号我很熟悉,但没有关键字 . 其他Lisps有关键字吗?关键字如何与除了具有不同符号(即:冒号)之外的符号不同?
  • 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有什么区别? 请给出详尽的解释和例子 .
  • 5 votes
     answers
     views

    如果有的话,这个方案中letrec的定义有什么问题?

    R5RS为库语法形式提供了建议的宏定义: http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-10.html#%_sec_7.3 其中也以一种非常复杂的方式定义了letrec,当然不是我如何定义它,我会简单地使用: (define-syntax letrec2 (syntax-rules () ((letrec2 ((n...
  • 4 votes
     answers
     views

    letrec的常见用法,名为let和internal定义?

    我有几本关于Scheme的书,其中一些提到名为let和letrec,但实际上没有一个会给出一个令人信服的例子(我的意思是,何时以及为什么我会使用一个而不是另一个) . 是否存在letrec / named let实际上比内部定义或外部辅助过程更好的替代方案?
  • 2 votes
     answers
     views

    方案:为什么评估letrec中定义的递归函数失败?

    我在Scheme(DrRacket Pretty Big)中写了一个愚蠢的letrec: (letrec ((is-creative? (lambda (writing) (if (null? writing) #f (is-creative? (eval writing)))))) ...
  • 5 votes
     answers
     views

    letrec / letrec *比内部定义或命名let更好的示例?

    Kent Dybvig在Letrec和letrec *的Scheme Scheme Language中给出的两个例子是: (letrec ([sum (lambda (x) (if (zero? x) 0 (+ x (sum (- x 1)))))]) (sum 5)) 和 (letrec* ([...
  • 1 votes
     answers
     views

    访问方案中的列表元素

    如何更改Scheme中列表的元素 . 我想要一个过程来将列表的最小元素更改为另一个数字,所以 如果我有一个名为proc的过程,我给它两个参数(一个列表和一个数字),我的过程就像这样: (proc (list 1 2 3 1) 9) 返回 '(9 2 3 9) . 所以9代替列表的最小值 . 我知道我可以应用min来获得最小值,但我不知道如何修改列表中的单个元素 . 由于Scheme没有变量来保存...
  • -1 votes
     answers
     views

    letrec混乱,Scheme

    我正在努力解决let,letrec,let * ...之间的区别因为scheme不是我的主要编程语言,我的内存不存在很长时间..我有这个功能..现在我很困惑这里的letrec ..这又是递归 . 我可以理解......但是在这段代码中无法 Build 足够的连接..(可能仍然对递归感到困惑)有人可以解释为什么这里需要letrec (define myFunc (lambda (start en...
  • 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...
  • 4 votes
     answers
     views

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

    很早就在功能微分几何中,Sussman&Wisdom开始使用"up structure" ......但我对这可能是什么没有任何想法 . (print-expression ((compose P2-chi R2-chi-inverse) (up ’x0 ’y0))) 我无法在文本的任何地方找到这个结构的描述,我无法在Scheme的标准版本或语言文档中找到它........
  • 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 ? (理想情况下,根本不需要更改第一个文件 . ...
  • 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时输出之间没有区别 . 我的印...
  • 6 votes
     answers
     views

    Scheme编译器Stalin中的全局类型推断

    我正在研究Scheme编译器Stalin . 它既大又复杂 . 此外,如果我理解正确,作者正计划撰写一系列详细介绍实施方面的论文,但从未接触过这样做 . 我感兴趣的斯大林方面是全局类型推断:根据它们在程序中其他地方的用法来推断事物的类型 . 斯大林确实这样做了吗?如果是,如何以及在其代码库中的位置?它是否使用Hindley-Milner算法的变体/扩展?
  • 79 votes
     answers
     views

    Clojure与其他Lisps [关闭]

    我的问题的意图是 not 开始一场火焰战,而是确定在什么情况下每种语言都是"the best tool for the job." 我已经阅读了几本有关Clojure的书(Programming Clojure,Practical Clojure,The Joy of Clojure和Manning Early Access版本Clojure in Action),我认为这是一...
  • 12 votes
     answers
     views

    SICP例子:计数变化,无法理解

    我是麻省理工学院开放式课程的SICP课程的初学者,使用视频讲座和在线提供的书籍 . 昨天我遇到了一个例子,它询问我们是否可以编写一个程序来计算改变任何给定金额的方法的数量 . 这个问题有一个简单的解决方案作为递归过程: (define (count-change amount) (cc amount 5)) (define (cc amount kinds-of-coins) (cond ...
  • 3 votes
     answers
     views

    如何编译多个Chicken Scheme文件?

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

热门问题