Racket 球拍的动态要求

我正在试验racket文档中给出的2htdp/planetcute库 当我尝试使用它的对象时,比如角色男孩。它告诉我动态需求被设置为f而不是0 因此,有一个过程称为: (dynamic-require mod provided) 其中,mod=模块路径,提供的=值 所以,我运行了这个: (define path (string->path /usr/shared/...../character-boy.rkt)) (dynamic-require path 0) 然后,我可以使用返回图

在racket中创建一个简单变量

如何用我声明的列表重新创建下面的代码 作为变量 > (map (lambda (i) (string-append i "!")) (list "peanuts" "popcorn" "crackerjack")) '("peanuts!" "popcorn!" "crackerjack!") 谢谢你是说像这样吗 (define (add-! l) (map (lambda (i) (string-append i "!")) l)) (define

Racket 我可以在BSL中将列表分成多个部分吗?

我有一个值列表,希望从中获取前x个值并创建(list(listof first x values)(listof next x values)等等,直到这个列表变为空…) 例如,给定此列表:(列表“a”“b”“c”“d”“e”“f”“g”“h”“t”) 返回以下内容:(列表a“b”c)(列表d“e”f)(列表g“h”t) 提前感谢:)记住列表的数据类型是什么。您的类可能正在执行以下操作: ;; A IntegerList is one of: ;; - '() ;; - (cons In

Racket 小打字机。我不知道';我不理解λ的最初第二条戒律的含义;

我试过下面的例子,但不管y发生与否, 函数f在应用后返回与(λ(y)(fy))相同的值 我想做的是定义一个函数,当Y作为反例出现在Y中时,它与(λ(Y)(fy))不同(->yx),但我不知道如何定义 我是否误解了λ的最初第二条戒律的含义 ;;y does not occurs (claim f (-> Nat Nat)) (define f (λ(y) 0)) ;; both return (the Nat 0) (f 5) ((the (-> Nat Nat)

Racket 如何为具有任意数量值的异构列表订立契约?

我正在尝试为如下数据订立合同: (a(b c)(d e);;a、 b、c、d、e都是符号 它基本上是一个列表,由一个符号和任意数量的两个符号组成 有list/c,但这只允许我使用固定数量的元素。 还有*list/c,它接受任意的初始值,然后是最终的固定值,这与我需要的正好相反 如何为我的数据结构制定正确的契约?您可以使用cons/c将一个契约应用于列表的开头,另一个应用于列表的结尾。你想表达的是,头部是一个符号,而尾部是一组符号对的列表,因此: (cons/c symbol? (listof

Racket 懒拍中的动态规划

我试图记住如何在lazy racket中进行动态规划。在我解决了欧拉计划的一个问题后,我开始思考这个问题: 从下面三角形的顶部开始,移动到相邻的 下一行中的数字,从上到下的最大总数为23 3 7 4 2 4 6 8 5 9 3 也就是说,3+7+4+9=23 从下面三角形的顶部到底部查找最大总数: 我用下面的代码解决了这个问题。然而,我在学校里学到了lazy-racket(实际上是一般的编程语言),我似乎还记得,在lazy语言中,解决动态编程问题要容易得多。例如,在其他EULER

在DrRacket、DrJava、DrPython中,什么是;Dr";代表

目前,有些编程语言(如DrRacket(DrScheme)、DrJava和DrPython)有一些ide。有人知道前缀“Dr”代表什么吗?它的意思是医生。IDE是一种关于语言的博士/教授。它的意思是博士。IDE是一种关于语言的博士/教授。这一假设由题为“DrJava:Java的轻量级教学环境”的“DrJava:Java的轻量级教学环境”支持。这一假设由题为“DrJava:Java的轻量级教学环境”的“DrJava:Java的轻量级教学环境”支持。这一趋势始于PLT方案。Scheme解释器/编译器

Racket 如何使用帧计数器以球拍语言使图像闪烁?

以下步骤是在飞行模拟器的racket雷达模拟器中,它将锁定在飞机上的对象显示为椭圆,我们需要让椭圆周期性地闪烁和重新出现。使用或不使用帧计数器,如何编写脚本 (define rwr-tracking (let ([p (new dc-path%)]) (send p ellipse 0 0 400 400) p) ) 下面是一个让您开始学习的示例: #lang racket (define (redraw-radar) (sleep 0.5) ; 0.5 seconds

Racket为函数强制输入类型

我想强制执行racket中函数输入的数据类型。例如,在这个函数中,如果有人输入字符串,我希望得到整数并抛出一个错误 有没有一个标准的方法来执行这一点在球拍 (sum-coins pennies nickels dimes quarters) pennies : integer? nickels : integer? dimes : integer? quarters : integer? 是的,有两种标准方法 合同 检查条件并在运行时引发错误: #lang racket (d

Racket 球拍终端:退出当前节目的命令?

在命令行中运行Racket时,可以使用开始运行Racket程序 (enter! "yourfile.rkt") 如何在命令行中保持Racket打开的同时退出当前的.rkt程序? 使用 完全关闭Racket而不是当前的.rkt程序。也许您可以尝试一下,当前名称空间将恢复为原始名称空间 (enter! #f) (enter! #f)

Racket 地图功能在球拍中的实现

map函数是如何在racket中实现的,为什么是递归或迭代 可能是一些实现示例如何实现map map函数遍历一个列表(或多个列表),并将给定函数应用于列表的每个值。例如,将add1映射到列表会导致: > (map add1 '(1 2 3 4)) '(2 3 4 5) 因此,您可以将map实现为递归函数: (define (map func lst) (if (empty? lst) '() (cons (func (first lst)) (map func (re

Racket 为什么在球拍外壳中输入(或#t(/10))时没有看到错误?

(/10)是非法的,但为什么我们没有看到错误 我的讲稿中有一个解释 标识符或不是指函数,而是指 实现短路的语法形式 但我还是不太明白。关键是,或是一种句法形式,正如你在课堂讲稿中提到的那样。这意味着求值规则不同于正常过程,可以在解释器级别实现,或者(更可能)作为派生表达式或宏实现。如果我们试图将或作为一个过程来实现,您的示例确实会失败: (or #t (/ 1 0)) 过程在将所有参数传递给主体之前对其进行评估。相反,或计算其第一个参数,如果它是truthy,则返回第一个参数的值,否则返回计算

Racket 我怎样才能使用“多”字;return";下面代码段中的语句?

在else条件下,我有两条语句要执行。第一个应该将我的计算附加到我的返回列表中,第二个应该再次调用我的递归过程。 问题是我的append过程被忽略了,所以我只是返回一个空列表 (define (calcit x lst) (cond ((= x 0) retlst) (else (append (list (floor (/ x (first lst)))) retlst) (calcit (modulo x

仅在DrRacket交互窗口中重新绑定键

我想重新绑定 C-up至“M-p:将先前输入的表达式向下移动到提示符” 及 C-down至“M-n:将表达式历史记录中当前表达式之后的表达式向下移动到提示符” Racket的行为不同于我的默认终端,我可以使用这些控件绑定滚动之前的表达式。racket给出了一些重新绑定的示例,但没有解释如何仅在“交互”窗口中重新绑定键,这正是此处需要的。它所做的是保持C-up和C-down的相同绑定,这意味着上下移动光标,这在编辑器窗口和交互提示中非常有用。但我不想这样,因为我看不出它的用途。这是我自己用的。请随

Racket 1转移/减少球拍冲突

我正在编写一个球拍代码,我遇到了一个问题,有人能告诉我如何解决它吗?我总是得到:1转变/减少冲突 注:(它是代码的一部分) 提前谢谢 (statement ; a statement is one of these many things ;;; TODO: Add Paper, Pen, Line, Set and Repeat [(PAPER expr) (paper-expr $2 (numeric-expr 100) (numeric-expr 1

如何使用高阶函数重写这些(使用Dr.Racket)

这是我的家庭作业,但我们只允许使用过滤器、映射、foldr、排序、构建列表和lambda,而不是显式递归 如何使用上面的高阶函数重写这些函数,以避免函数本身调用 我现在拥有的是: (define (worthless loc name) (cond [(empty? loc) loc] [(equal? name (coin-name (first loc))) (cons (make-coin (coin-name (first loc)) 0) (worthless (r

为什么Racket对REPL上的突变和同时使用定义窗口和REPL的突变有不同的处理?

通常,我避免使用突变,因为你很少需要它们 然而,我需要他们,我正试图更好地理解一些事情。有一种特殊的行为引起了我的兴趣,我想请你帮助我更好地理解它 如果我在REPL上键入以下更改,则一切正常: > (define x 1) > (set! x (+ x 1)) > x 2 如果我将赋值和变异放在定义窗口中,它也会起作用: (define y 1) y (set! y (+ y 1)) y 运行文件后,我可以在REPL上看到以下正确结果: 1 2 > 但是,如果我将变

Racket 你如何制作一个在球拍中使用关键字的函数

我在racket中看到一些函数或数据结构使用关键字(#:foo),但我还没能变出我自己的函数来使用它们。racket文档只是松散地定义了关键字类似于符号,sorta只是保留了这一点,但是编写一个假定以关键字作为参数的函数只会导致以下错误:在关键字之后缺少参数表达式,这让我相信关键字和符号完全不同,因为它们不能仅仅作为值传递(除非引用) 我最熟悉的使用关键字的示例是match: (... (match foo [n #:when (< 10 n) "foo is grea

Racket 如何在球拍中开始捕捉当前连续体

我正在Racket中学习call/cc,通过示例沿着纸张的连续线学习:异常、时间旅行搜索、生成器、线程和协同程序 本文提到,最有利的API来自call/cc,它提供了一个过程lambda(cc)(cc-cc)。我理解这个特定的call/cc调用将当前的continuation一级对象返回给主程序 在下面的示例中,本文调用所有这些(现在) 我看到的是,在同一个示例中,上面提到的call/cc调用返回的cc对象始终通过将其应用于自身来运行。这就是我不明白的 我看不出cc有什么特别之处,所以我试着用(

DrRacket和终端上的球拍交互

此程序在DrRacket中运行良好: (define (display-state input data) input) (define (update-state input data) data ) (define (main input data) (displayln (display-state input data)) (main (read-line (current-input-port) 'any) (update-state input d

Racket 在球拍中包括模块

我在Racket中创建了一个模块(game.rkt),其中有我的游戏逻辑;在这个文件中,我定义了几个变量、函数、线程 我需要将该模块嵌入到另一个模块(gui.rkt)中,并从gui.rkt启动游戏(game.rkt) 我该怎么做? gui.rkt:您需要提供希望其他模块能够使用的定义。默认情况下,定义在模块外部不可见。如果您已经定义了要提供的函数foo和bar:(提供foo-bar) game.rkt:(需要“gui.rkt”) 这假定文件位于同一目录中 有关更多详细信息,请参阅指南中关于和的

Racket 如何捕获展开的表单?

我试图通过定义自己的模块begin来捕获扩展的表单: (define-syntax-rule (my-module-begin e ...) (#%module-begin e ... (foo e ...))) 我说的foo这里有原始表格,对吗?如果是这样的话,foo是否有办法获得扩展表单?要获得扩展表单,您需要以某种方式使用 第1部分,不完整的解决方案 您可能会想单独调用每个表达式,如下所示: #lang racket (require syntax

Racket 是否有检查列表中是否存在元素的函数?

在racket中,我知道member函数返回元素的第一次出现(如果它存在)或#f,但是否有一个函数只返回元素是否存在于列表中的#t或#f,我认为没有标准函数,但是你可以在图书馆里看到和看到 定义true?非常简单: (define (true? x) (if x #t #f)) 我不认为有一个标准的函数用于此,但请参阅库中的和 定义true?非常简单: (define (true? x) (if x #t #f)) 这个问题的答案是会员。在《球拍》中,一切不是#f的都是真的。

Racket 要使此代码正常工作,可以';我不明白该把论点放在哪里,不断地出错

定义函数iota1(n,m),该函数将n'(3 4 5) (cons 3)(cons 4(cons 5’))(cons 4)(cons 5’)) 选择使用cons而不是append是个好主意,因为它更简单,而且速度更快,因为cons不像append那样遍历整个列表 由于这听起来有点像家庭作业问题,我将给您留下一个“代码模板”来帮助您找到答案: ;n:整数 ; m:整数 ; 返回值:整数列表 (定义(iota1 n m) (如果(>n m);基本情况;当n大于m时无需做功 …;位于列表末尾的值

Racket 如何告诉“makemoduleevaluator”使用像#lang那样的定制阅读器?

我试图在给定的字符串(而不是文件)上执行定制的#lang。我们把它叫做花椰菜 安装程序 我的语言定义如下: 西兰花/main.rkt (模块读卡器支架/底座 (需要花椰菜/私人/阅读器) (提供读语法));基本上是一个复制品 西兰花/private/reader.rkt (提供 (改名为 [我的阅读] [我的读取语法读取语法]) (定义(我的读入) (语法->基准 (我的阅读语法#f in))) (定义(我的读取语法src in) (使用语法([parse tree(parse src(mak

Racket 如何测试我的球拍快速检查生成器?

假设我有一个用于区间结构的生成器,例如 (struct interval (lo hi) #:methods gen:custom-write [(define write-proc (make-constructor-style-printer (lambda (obj) 'interval) (lambda (obj) (list (interval-hi obj) (interval-lo obj)))))]) (defi

如何在Racket中使用lambda定义时区和列表

我收到了以下代码: #lang racket (define-struct utc (sign hours mins)) (define-struct location (city timezone)) (define iqaluit (make-location "Iqaluit" (make-utc '- 5 0))) (define london (make-location "London" (make-utc '+ 0 0))) (defi

Racket 使用散列集的球拍中的平方欧氏距离

我正在尝试编写一个函数来计算。我最初将数据存储在表单的列表中: '(1 8 0 0 0 1 0 5 0 1) '(1 0 2 0 0 0 0 5 0 0) 基本上我想得到的是: '(0 64 4 0 0 1 0 0 0 1) 使用列表并不难实现这一点,就像使用下面的代码一样: (define (f a b) (apply + (map (λ(x y) (sqr (- x y))) a b))) 然而,我正在处理的数据中有相当多的零,因此我尝试用哈希集替换列表,如下所示: '#hash(

Racket 显示x&;y坐标与鼠标处理程序

“图片程序”第10章(最后练习10.2.6)是我正在编写的书 我试图以线性方式使用书中介绍的内容。该练习需要在窗口上显示x&y坐标的动画 必须在不使用条件、循环、未提及的内置函数等的情况下执行此操作 我在编写鼠标处理程序处理同一表达式中的x-mouse和y-mouse时遇到问题 我想不出一种方法来跟踪它们(即…在同一个mh中)而不抛出错误 (define (number->image s) (text (string-append "(" (number->s

Racket 如何编写只从嵌套列表中返回奇数的函数?

如何使用racket语言编写如下工作的函数奇数列表 (odd-list '((1 2 3 4) (5 6 7 8) (10 11 12 13))) => ((1 3) (5 7) (11 13)) (需要srfi/26) (定义(奇数列表) (映射(剪切过滤器奇数?)列表) 享受。:-) 嗨,欢迎来到Stack Overflow!这里的习惯是实际提问而不是发号施令(我对你的问题做了一些编辑)。这些问题可能是“我尝试了foo,希望得到bar——为什么我得到了baz”,而不是“你能帮我做作

搜索树中的racket递归(回溯)

我的球拍语言有问题。我想在列表中找到目标状态。但在达到我作为参数给出的限制的那一刻,我得到了->函数调用:在开括号后应该是一个函数,但收到的却是空的。问题出在expand2中 我怎么在球拍上写这个 (定义(主启动限制) (let([结果(扩展起始限制)]) (写入结果) (定义(扩展状态限制) (条件((目标状态)(列表状态)) ((

Racket 比弗洛姆

我想定义一个具有以下属性的函数: (almost-equal? (cos (/ pi 2)) 0.0) ; --> #t 为此,我认为应该以以下方式使用flulp: (define (almost-equal? a b) (let [[epsilon (max (abs (flulp (* 10.0 a))) (abs (flulp (* 10.0 b))))]] (<= (absolute-error a b) epsilon))) (定义(几乎相等?a b)

Racket 如何编写新的#%datum函数来捕获所有字符串?

我想写一种新的球拍语言,它以某种特殊的方式捕捉和处理字符串。我编写了以下示例代码: #lang racket (provide #%top #%app #%top-interaction #%module-begin (rename-out [datum #%datum])) (define big-string "") (define (add-string x) (set! big-string (string-append big-string x))) (d

Racket -D选项和球拍中的#ifdef

在C语言中,您可以使用选项进行编译,例如,-DPROMPT。然后,在文件中可以有#ifdef提示符,代码将在编译时转换以包含该块中的内容 球拍里有类似的东西吗?我尝试了racket--help,但没有看到任何有用的选项。使用环境变量在racket世界中公开外部值 是的,但它的工作原理与C语言略有不同。正如Alexis所说,Racket编译是半隐形的。然而,球拍回音系统中有一些工具可以做到这一点,其中最流行的就是 无论何时使用,只要愿意,您都在编写编译器插件。这与C之间的主要区别在于,在C中,您需

Racket 为什么在Redex中需要评估上下文?

完全可以在不使用评估上下文的情况下为我的语言编写评估规则。我的语义完全是按值调用的,不允许在lambdas中向前推进术语。尽管如此,我看到的所有资源都以某种方式使用了reduce上下文。有没有一个很好的理由使用我所缺少的上下文?简短的回答:你没有,但是使用它们会容易得多 长句回答:几乎所有你将使用评估上下文的东西,你可以在你的简化关系中使用不同的简化规则,这会变得更令人讨厌,尤其是当你对任何东西建模时,除了最小的语言 假设您希望通过值lambda演算对调用进行建模。其语言(无评估上下文)为: (

Racket 球拍:在两个不同的函数中从列表中获取相同的随机元素

我想从列表1中选取一个随机元素,将其从列表1中删除,然后将其添加到列表2中。 (定义列表1'(1 2 3 4 5 6 7 8) (定义列表2’(9 10) 现在我的问题是,我使用了两个函数来更新列表。 list1将删除一个随机元素,list2将追加一个随机元素,但并不总是相同的元素。 如何使list2添加元素,删除list1,然后重复这些步骤,直到list1为空? 提前多谢 #朗球拍 (定义列表1’(1 2 3 4 5 6 7 8)) (定义列表2’(9-10)) (定义(选择随机列表) (汽车

Racket 以下球拍代码中的错误是什么?

显示的错误为:模块语言:定义窗口中只能有一个表达式:(定义(灯泡c)(圆圈10“实心”c)) 交互被禁用。 ///我无法找出错误所在。DrRacket无法识别代码中使用的语言。您需要手动选择一种语言。看起来您正在学习HtDP教科书的第一章,所以我建议您学习初级学生语言。您可以通过以下方式进行: 在文件开头添加#lang htdp/bsl 使用DrRacket窗口底部的选择器: 对“创建交通信号图像”部分进行了注释,它适合我。。。尝试改变语言谢谢@Andrea Gottardo。选择一种语言,

升级最小球拍和DrRacket

我在Mac OS X Sierra上,我一直在使用自制软件来获得最小的拍子,然后通过raco在上面添加我想要的东西。其中的一件事就是拉扯 然而,在从6.10升级到6.11之后,事情有点不对劲。当我升级brew时,brew中的操作进行得很顺利,没有产生任何错误。但drracket随后未能启动,原因如下: dyld:库未加载:/usr/local/cell/minimal racket/6.10/lib/racket/racket.framework/Versions/6.11_3m/racket

如何检查Racket语法中是否存在关键字?

我想检查语法对象中是否存在关键字。 当关键字后面跟一个表达式时很容易: (syntax-parse #'(hello #:world "sunny") [(_ (~optional (~seq #:world <adjective>:str))) #'(string-append "Hello world! Today's weather is " (~? <adjective> "unknown"))]) 如何将#:w

Racket 球拍:“;字符串ith";不在正常的球拍下工作

我在Emacs中的Geiser环境中使用(带“hello”3的字符串)。它显示了一个错误 string-ith: undefined; cannot reference an identifier before its definition in module: top-level context...: eval-one-top /usr/share/racket/collects/racket/repl.rkt:11:26 我在Racket博士的IDE中尝试了同样的方

Racket 从“交互”切换到“定义”面板的快捷键

今天拿起《球拍王国》一书,读完了第一章。在编辑器中真正让我慢下来的是需要鼠标单击来切换面板。有键盘快捷键吗?我在上的“键盘快捷键”部分找不到它 顺便说一下,我听说标准的Lisp编辑器是Emacs。DrRacket附带的编辑器是否基于Emacs?在这里找到了答案: 结果显示,按一次或两次Control-D或Control-E即可完成此任务。您也可以使用Ctrl+F6直接切换。

Racket 如何打印列表定义的名称?拉科特博士

我想知道如何打印列表定义的名称,如: (define Mylist (cons "ab" (cons "cd" (cons "ef" empty)))) 然后调用(字符串附加“Mylist”“其余的..bla bla”)。 不(字符串附加“abcdef”“其余..bla bla”) 例如: 我有一辆小型公共汽车,上面有乘客“约翰”、“丽莎”、“伊迪”。 现在我想做一个函数,它可以打印如下内容: “小巴运输:约翰、丽莎和伊迪”。听起来你想知道名单上的名字。也就是说:给定列表,做一些得到列表名称的

Racket 球拍中的图形绘制

我在用图论开发一个数学研究程序,我需要画数据。有图书馆吗 图形示例: ‘((1 2) (1 7) (2 3) (3 2) (4 2) (7 4)) 提前谢谢你 Usegraphis允许您在GraphViz的帮助下绘制图形

Racket 球拍是否允许功能过载?

我不熟悉Lisp scheme,也不熟悉整个函数范式,目前正在做一项作业,要求我在racket中重载一个名称相同但参数集不同的函数。下面是我努力实现的一个例子: #lang racket (define (put-ball-in-box two-by-fours nails ball) ... ) (define (put-ball-in-box box ball) ... ) 这些不是实际的功能,但已经足够接近了。正如所暗示的那样,这两个函数都会将一个球放入一个盒子中,但其中一个

使用Racket创建一个函数,如果所有数字都是奇数,则返回布尔值?甚至?

我被这个问题困住了。事实上,代码一直在运行,并且没有结束。有什么建议吗 (选中expect(所有元素?偶数?(列表1 2 3))false) (选中expect(所有元素?偶数?(列表2 4 6))true) (选中expect(所有元素?奇数?(列表1 3 5))true) (定义(所有元素?谓词lst) (续) [(空?lst)假] [(谓词(第一个lst))true] [其他(所有元素?谓词lst)] ) ) 不同的方法: 或作为可变函数: (define (all-elements? p

Racket:局部扩展递归定义

我试图编写一个宏,其行为与racketdefine类似,但以某种方式处理完全扩展的racket过程(为了简单起见,在下面的示例中进行扩展): 除非满足递归定义,否则一切正常: (define/expand (sum n) (if (<= n 0) 0 (+ n (sum (- n 1))))) 它解决了这个问题(local expanded成功地将过程扩展为定义值),但创建了另一个: 模块:中定义的上下文外标识符:sum 指出和的定义。原因可能是扩展器将标识符

GUI:将racket:text%配置为只读

我想使用编辑器显示程序中的日志,我只需要一个非常基本的文本字段: 使用垂直滚动条 具有用于复制/粘贴的上下文菜单 防止用户更改文本 为了激活复制/粘贴菜单,我使用类racket:text%from framework而不是basic 如何防止用户更改文本 我阅读了文档,据我所知,我找到的最接近的东西是锁方法: 但这并不方便,因为它还阻止我的程序写入数据。 我还发现读写?但是找不到set read write。使用lock方法,只需在需要修改的地方解锁编辑器即可。您可能会发现,使用unloc

  1    2   3   4   5   6  ... 下一页 最后一页 共 24 页