Racket 在“中画线的最简单方法”;“橡胶结合剂”;在球拍画布上进行风格设计

有没有人对如何在“橡皮圈”模式下(在球拍中)画画有什么指点。我不希望使用任何类型的backbuffer和flip操作。在当时,使用了XOR光栅操作。您需要在XOR模式下绘制一次线(或其他图形),要删除它,您需要再次绘制它(在XOR模式下)。当您希望用户绘制线、圆等,并通过拉伸或“橡胶粘合”来调整它们的大小时,这非常有用。Racket文档似乎表明笔%或画笔%不支持“xor”样式 谢谢。xor样式在切换到开罗IIRC后被删除。无论如何,对于这样的问题,最好是在网上提问。

Racket 如何强制结构的字段为某种类型?

如何强制此结构中的字段类型 #lang racket (struct Car (model year)) 我试过使用合同(但因为我是新手,这个合同显然不起作用…:p) 示例:这成功了,但不应该 (定义我的车(car 2008“A3”) 遗憾的是,它似乎没有写在任何地方如何做到这一点。我认为你至少击中了一个,也许是以下两个: 使用(提供(外包…)意味着合同仅适用于模块边界——仅适用于需要此边界的其他模块。因此,如果您的测试示例在同一个模块中,那么契约将不适用。相反,您可以使用define/con

Racket 在球拍中,竖条可以用作标识符的一部分吗?

我想在Racket中为量子态定义一个变量,按照惯例,它是这样写的: 报告告诉我这是不可能的,因为: |开始在分隔序列中逐字包含的字符子序列 然而,我惊讶地发现,在“球拍”一节中,该页提到: 竖条可用作其周围的标识符引用 这是一个糟糕的公式,还是球拍中的变量名实际上可以使用竖条?有人能举个例子吗 提前感谢。竖条是一种避免语言阅读器对其中字符进行常规解释的方法。因此,它可用于定义包含特殊字符的符号,例如: (define |(| 5) (+ |(| 1) ; produces 6 您始终

允许在不使用DrRacket的情况下重新定义R5R的初始绑定

对于R5RS语言,DrRacket可以选择打开或关闭禁止重新定义初始绑定 这让我很好奇:不使用DrRacket就可以像这样调整语言设置吗?(例如,从命令行或Emacs使用Racket时) 如果是,以何种方式?如果不是,或者不是以合理的方式,原因是什么?参数编译强制模块常量控制是否允许重新定义: soegaard$ ./racket Welcome to Racket v6.6.0.3. -> (compile-enforce-module-constants #f) -> (mod

Racket 添加了“合同输出”的合同不被执行

我需要解释一下为什么这个“合同外包”不起作用。 它应该只返回正值,但仍然接受负值。有人能解释一下吗?多谢各位 #lang racket (struct account (balance)) (provide (contract-out [balance (-> account? number?)] [deposit (-> account? positive-num? account?)])) (define new-account (account 0)

Racket 使变量跨阶段可访问

如何在多个阶段中访问同一变量?例如: 定义foo1 定义语法bar foo 会抱怨没有在阶段0中定义foo。这取决于您想要这个变量做什么。以下是一些选项: 您希望它是一个不可变的原始值。 您希望它是不可变的,但像结构一样的复杂数据不是基本数据。 你希望它是可变的。 在Leif Andersen的评论中,她说你真的不能,也不应该,即使你可以。我猜她说的是3。Racket编译器试图在内部Racket运行时系统中使3不可能。在Racket文档中,这称为。背后有很好的理由,为什么3是个坏主意,莱夫·安

Racket 球拍核心功能的可变性

我今天遇到了一个相当意外的行为,它完全违背了我所知道的关于球拍的可变性 #lang racket (define num 8) ;(define num 9) 取消第二行的注释将返回错误“module:duplicate definition for identifier in:num”,这是正常的。毕竟,define应该将已经定义的值视为不可变的 然而,这对我来说毫无意义: #lang racket (define num 8) num (define define 1) (+ def

Racket 将字符串映射到列表球拍

我想要一个接受字符串的函数,由python格式的树组成,如下所示 "[0, [1, 0]]" '(0 (1 0)) (define (py-treestringlst-to-rkt-lst treestringlst result) (cond [(empty? treestringlst) result] [(char=? (car treestringlst) #\[) (append (append result 并输出一个可用的球拍列表,如下所示 &

如何在racket中处理多个返回值?

似乎为了在Racket中使用多个返回值,我必须使用定义值,或者使用(调用值(thunk(values expr))列表)将它们收集到一个列表中。在后一种情况下,如果必须将多个值收集到一个列表中,为什么要选择返回多个值而不是一个列表?此外,这两种方法在大多数代码中都非常冗长和笨拙。我觉得我一定是误解了关于多重返回值的一些非常基本的东西。就这点而言,我如何编写一个接受多个返回值的过程?为我们提供了一个典型的示例,说明了为什么要伪装: > (let-values ([(q r) (quotien

抽象函数-Racket博士

开发谓词a-student?,如果学生的gpa高于3.7,则返回true,并使用它来 开发函数a-students?,该函数使用学生列表,并生成所有学生的列表 gpa在3.7以上的学生。使用过滤器。如提示所示-在a-students函数中使用: (filter (lambda (student) (a-student? (student-GPA student))) list-of-students) 我能做第一部分并开发谓词a-student我只是在找出如

Racket Scribble文档:两个简单文件之间的交叉引用

(Racket documentation tool)说“一起呈现的[…]文档中的交叉引用总是可以解决的”,但是下面的文件a.scrbl没有引用文件b.scrbl a.scrbl: #lang scribble/base @secref["sectag" #:doc "b.scrbl"] #lang scribble/base @section[#:tag "sectag"]{A section} b.scrbl: #lang scribble/base @secref["sectag" #

Racket 球拍中违反合同(制作阵列)

我想制作一个1xn的数组,其中n是某个输入数组中出现的最大值(它只包含整数)。 我用下面的示例输入数组检查了get max的类型。它的类型是整数。(注意,描述来自图书馆(planet williams/descripe/descripe))) 以下是生成数组的代码: (define (array-from-max input) (local ((define get-max (array-ref (array-axis-max input 0) #()))) (make-array

Racket 球拍涂鸦,如何添加搜索框?

我使用scribble生成包的文档 raco会把我的资料和racket self的文件整合起来, 并在页面左上角添加一个搜索框 当您使用“raco文档”时,您可以看到这一点 现在我想使用scribble作为文档工具来生成我的独立文档 文件 但是当我使用scribble——htmls demo.scribble时,它不能有一个搜索框 在页面的左上角 如何添加搜索框以使我的文档具有搜索功能?有一种方法可以做到这一点,但遗憾的是,目前还不是特别令人愉快。如果你想让我们做得更好,请提交一份(或者如果你有

Racket 使用前缀从模块导入,而不公开不带前缀的内容

我希望只能从Racket中的模块导入带名称空间的项目。函数中的前缀确实允许我使用前缀从模块访问函数,但它不隐藏旧名称 $ racket Welcome to Racket v6.6. > (require (prefix-in tcp: racket/tcp)) > tcp-accept #<procedure:tcp-accept> > tcp:tcp-accept #<procedure:tcp-accept> $racket 欢迎来到Racket

Racket 用合同定义类型化的球拍结构

有没有一种方法可以在一个(键入的)结构旁边为键入的Racket中的整个结构定义一个契约?在我的特殊情况下,我有一个将两个列表作为字段的结构,我希望列表的长度相同 我看过: ,它允许指定一个“守卫”来调节构造函数调用。如果长度不匹配,我可以传递一个引发异常的过程,但我不知道如何处理make struct type返回的值 和的struct形式,两者都从单个字段上的契约生成结构契约。这在这里似乎没有帮助 理想情况下,我希望立即将契约绑定到结构(如定义/契约),但当我提供类型的过程时,我愿意添加契

找不到DrRacket IDE

嗨,伙计们?这里是新手问题。我开始学习如何设计程序。我需要DrRacket IDE来看完这本书,但我似乎无法从网站上获得它 我得到的安装打开了一个命令提示符。如何启动DrRacket GUI部件,或者应该安装哪个软件包。当我安装副本时,它为我创建了一个名为“Racket”的开始菜单组(在“所有程序”下),其中包含“DrRacket”项,设置为运行“C:\Program Files\Racket\DrRacket.exe” 尝试查找此可执行文件,如果找到,可以在命令提示符下键入“DrRacket”

DrRacket-显示列表中高于平均值的所有值

我正在创建一个函数,它使用一个数字列表,并生成列表中高于平均值的元素。 下面是我的代码: (define (listlength list) (cond ((empty? list) 0) (else (+ 1 (listlength (rest list)))))) (define (listsum list) (cond [(empty? list) 0] [else (+ (first list)

Racket 在VSCode中修复球拍缩进?

我使用VSCode作为我的racket IDE,虽然所有代码都经过编译,但缩进特性都不起作用 我安装了各种各样的球拍扩展(Magic racket等),因此代码都很好并且突出显示,缩进都不起作用。例如,cond如下所示: (cond[] []) 我也尝试了VSCode的racket/scheme包。尽管在设置JSON文件中切换了各种设置,但仍面临相同的问题。错误是没有安装“racket”文件的格式化程序。当我按下“format”键盘快捷键时

如何链接到Scribble中的第三方Racket文档?

我正试图链接到第三方(而不是核心)库提供的Scribble文档(特别是),但我很难让它正常工作 通过这些进口: @require[scribble/manual scribble-abbrevs/manual scribble/example racket/sandbox @for-label[(only-in racket (foldl f:foldl)

删除元素后,在Racket中为列表使用相同名称时出现问题

我正在尝试在Racket中创建一个简单的Hangman应用程序。我使用一个列表数据结构来保存字母表中的字母,并删除玩家在猜列表中的字母时猜到的字母。但是,我得到以下错误: (定义未使用的字母(删除“a”未使用的字母)) 定义值:不允许赋值 无法重新定义常量 常量:未使用的字母 在列表被更改后,我似乎无法重新使用“未使用的字母”作为列表?有没有办法解决这个问题,或者我应该采取另一种方法?要为现有变量指定一个新值,可以使用set: (set! unguessed-letters (remove "a

Racket中的Fixnum数据类型是什么?

我想把我的球拍程序打出来以加快速度。我的程序使用矩阵数据类型对矩阵执行操作。有人建议我使用数据类型Fixnum 我有一些矩阵,比如, (:X(矩阵Fixnum)) (定义X(矩阵[[01][23]]:Fixnum)) 没关系 但是,如果矩阵中的数字有小数,我会得到一个错误。 (:Y(矩阵Fixnum)) (定义Y(矩阵[[0.5][1.5 2.5]]:Fixnum)) 类型检查器:类型不匹配 预期值:Fixnum 给定:正Flonum in:0.5 Fixnum是一种机器类型(我不完全理解它是什

Racket 获取错误“;模块:文档中已需要标识符";导入代码时

在我的Racket程序中,当我试图从我编写的文件中获取代码时,会收到错误消息:“module:identifier ready required In doc”。但是,当我将代码复制并粘贴到所需的模块中时,它工作得很好。想法 我尝试过使用(提供(全部定义出来))以及在提供表单中列出所有函数名。顺便说一句,我用涂鸦文件而不是直拍文件来编码 @(require racket/date racket/file racket/string ra

Racket 计算发生次数并计算正数之和,直到球拍中达到0为止

创建一个计算程序compute_pos,该程序从键盘读取数字,直到读取0为止,计算读取的正数数量,还计算仅正数的和,并在不同的行中显示计数和正数的和。请注意,计算中不包括0 例如,如果用户输入: 3. 6. -4 12 15 -9 -24 4. -3 -5 1. 0 那么你的程序应该打印出来 正计数:6 正和:41 您需要使用“显示”程序来显示计数和总和,还需要使用“读取”程序来保持从键盘读取下一个数字 我甚至不知道从哪里开始,所以感谢您的帮助。欢迎来到Stack Overflow。请阅读帮助中

任何使用shift键修改字母键的DrRacket键绑定都不会';行不通

我已取消选中菜单中的启用键绑定 作为修改器,shift键似乎只适用于箭头键 例如,在默认的活动键绑定中,“向后选择”映射到(c:s:b),但当我按住ctrl和shift键并按“b”时,它只插入“b”。同样的命令也映射到(s:left),这很好。没有移位的键绑定似乎也能工作 对于非字母键,我可以通过制作带有上移符号的自定义键绑定来绕过它;(c:冒号)有效,而(c:s:分号)无效 谢谢你的帮助 我尝试过的事情: 制作自己的键绑定,如3.3.9所示 使用大写字母,例如(c:s:J),更改顺序,例如

Racket 使用一个管道在多个设备之间进行通信

我目前正在Racket上写一个项目,在那里我需要与一些(模拟的)设备进行通信。我用球拍管来做这个。设备可以从管道中读取数据,并在管道上写入生成的答案。管家还可以在管道上看到生成的答案,并在管道上编写命令 设备可以通过以下代码将消息写入管道: File1: (#%require "communication.rkt") (write-string message output) (flush-output output) 通信输出输入和输出端口: File2: (define-valu

Racket-函数参数上的契约能否依赖于另一个参数的值?

假设我有一个函数: (define (func x y) ...) 我想限制这些论点,以便: x是一个正整数 y是小于或等于x的正整数 第一个约束显然微不足道,但有没有办法在Racket的合同系统中设置第二个约束?是的。您希望使用依赖契约,在使用契约组合符表示的Racket中。您描述的职能合同如下所示: (->i ([x (and/c integer? positive?)] [y (x) (and/c integer? positive? (<=/c x)

Racket(递归结构和处理模板)

我在处理这个结构时遇到了麻烦,我想写一个函数,告诉我们在一次讨论中有多少个主题 ; a Discussion is (make-discussion String Digressions) (define-struct discussion [topic digressions]) ; Digressions is [ListOf Discussion] ; count-topics : Discussion -> Number ; counts the number of tot

为什么我只能在DrRacket中键入一个字符?

它只能键入一个字符。 看起来像只虫子。 我使用的是fc6。这不是问题,所以不应该在这里发布。甚至还不清楚您的bug是什么(我们在Fedora 7上运行它,没有问题)——最好提供更完整的描述,并使用或将其作为bug发布在中

Dr.racket初级功能

我是racket博士的初学者。我被要求编写一个函数来执行以下操作: 编写一个不消耗任何内容的函数“readnum”,每次调用该函数时,它将生成已定义列表的第n个数字 例如: (定义一个(列表02-50)) readnum-->0(第一次调用readnum) readnum-->2(第二次调用readnum) readnum-->-5(第三次调用readnum) 你不必担心列表中有数字或没有数字可供阅读 racket博士是一种函数式语言,对变量进行变异并将其用作计数器是非常不方便的,在这个问题中,

Racket 球拍-闭合并应用闭合

所以我对球拍相当缺乏经验,但我正在写一个翻译 我一直无法深入了解闭包到底是什么,或者如何定义/解释“应用闭包”或“生成闭包” 我只是在用match等编写解释器的值 任何帮助都将不胜感激 以班级为例- (define value-of (lambda (exp env) (match exp [`,b #:when (boolean? b) b] [`,n #:when (number? n) n] [`(zero? ,n) (zero? (value-of n env))]

Racket 撤消'raco pkg更新--clone'或'raco pkg安装--clone'`

当我想在库上工作并提交修补程序时,我经常喜欢使用raco-pkg安装--clone(或者raco-pkg--更新clone,如果库已经安装) 但是,我意外地在错误的文件夹中运行了raco pkg update--clone,现在我似乎无法让它移动到正确的目录 我试着简单地移动目录,但racket(可以理解)不知道如何处理,我试着删除目录,但也不起作用 理论上我可以卸载软件包并重新安装。但是我已经安装了很多依赖它的软件包,如果要卸载所有这些软件包,然后重新安装它们,那将是非常烦人的 我是否有其他选

Racket 球拍为什么没有';t使用“加载数据”;要求;当数据在另一个文件中定义时

我将其保存在一个文件中(文件名为ExamplesFile.scm): 我知道数据是在变量examples 如果我执行: examples examples 在迭代窗口中,它给出了文件“examples.scm”中的数据。这很好 稍后,在位于同一目录的另一个文件中,我写入: (require "ExamplesFile.scm") 在第二个文件的iteraction窗口中,可以使用在“ExamplesFile.scm”中定义的函数。但如果我执行: examples examples 我得

Racket 球拍中的方言检测

我想写的代码是正确的,既为非类型的球拍和类型/球拍 目前,我提出了以下不太令人满意的原则:在文件开头插入“:”的虚拟语法定义,以便在使用非类型化racket时跳过注释。我在使用typed/racket时对这个定义进行了注释 例如: 及 这样我只需要删除/插入一个“;”要在球拍和打字/球拍之间切换 但是有没有一种方法可以让代码在racket和type/racket中运行时不需要任何更改?我没有找到如何通过编程来检测我是否在racket或键入/racket。。。然后我想我还必须找到一种方法,在顶层有

如何在Racket的contract out子句中指定可选参数?

假设我有一个签名如下的函数 (define (my-method a [b 100]) (/ a b) ) ,我应该如何在合同中指定此类签名 使用 (contract-out [my-method (-> number? number? number?)]) 然后在另一个模块中 (my-method 200) 没有帮助,因为它会发出错误,说“违反合同,收到:1个参数,预期:2个非关键字参数”。我想我不能只使用或/c使用->*组合两个有可选参数和没有可选参

Racket 有人能把这个代码转换成伪代码吗

我有racket lang代码,可以计算两个集合或列表的笛卡尔积,我不太懂代码,任何一个都可以将代码转换为伪代码。该函数对应笛卡尔积的定义 参数中的点意味着列表将收集所有参数(在列表中),无论传入多少个参数 如何调用这样的函数?使用应用。它使用列表中的项目作为参数应用函数:(应用f(列表x-1…x-n))=(f x-1…x-n) foldr只是列表上自然递归的抽象 应用1)、2)和3)中的简化,并将foldr中的“合并”函数转换为单独的辅助对象: ; my-foldr : [X Y] [X Y

Racket 公共小巴计划(球拍)

有人知道如何或是否可能在drScheme/Racket中自动完成括号吗?DrRacket不会自动完成结束括号(我想这就是你要问的问题),但是它会插入正确的paren形状——因此您可以快速点击几次]],直到关闭正确的级别 但是作为旁注,如果你一直保持括号(各种形状)和双引号等的平衡,那么在任何sexpr语言(或者实际上是任何其他语言)中工作都要容易得多。DrRacket通过使Alt-(E/CODE)插入一对PARES并将光标放在中间。Emacs也一样,但是DrRacket有类似的方括号、大括号和双

Drracket列出只添加数字而忽略其他数据类型

您好,我需要创建一个函数,该函数使用的列表只对列表中的数字求和,而忽略任何其他类型的数据(字符串等) 示例(仅添加数字(cons 5(cons“b”)(cons 2(cons“whatsup”empty())) 应该是(cons 7(cons“b”(cons“whatsup”为空))) 在收集数字并将其全部相加时,保持所有字符串或其他数据类型的顺序 如果没有数字,只有字符串,那么前面应该是0 示例(仅添加数字(cons“eb”(cons“b”(cons(使posn 5 0)(cons“whats

Racket 球拍中的列表操作

有这样的列表操作吗 "(x y) "(1 2) (替换)(x'y)“(12)(+'x'y)) ->(每个符号由数字列表相对匹配,并替换) ->(x=1,y=2) ->(+12) ->三, 我从参考资料中找不到任何想法 您可以使用让: (let ((x 1) (y 2)) (+ x y)) 如果您试图表示名称和值之间的映射(“字典”),有几种方法可以实现。Racket提供了一种散列类型,可以将名称与值关联起来。你可以在报纸上读到他们。有一种更通用的方法可以在Racket(在库中描

Racket 用球拍分割名单

给定一个列表和一个数字n,我试图将一个列表分成两个独立的列表:一个列表长度为n,第二个列表是原始列表的其余部分 以下是我所拥有的: (define (part lst i) (if (> i 0) (list (append (list (first lst)) (list (part (rest lst) (- i 1))))) (append lst))) 其中lst是输入的列表,i是编号。当我输入带有数字2的列表'(1234)时,我返回的输出是:'((1)((2(34)'))),而

Typed/Racket中函数类型的类型谓词

我正处于设计框架的早期阶段,正在玩弄typed/racket。假设我有以下类型: (define-type Calculate-with-one-number (-> Number Number)) (define-type Calculate-with-two-numbers (-> Number Number Number)) 我想有一个函数,可以根据类型进行分派: (: dispatcher (-> (U Calculate-with-one-number

Racket 获取对eval中当前绑定对象的访问权限 警告

我知道我要问的问题通常是邪恶的。我这样问是因为我想做一些测试,以确保即使用户调用eval(这个问题是关于什么的),静态分析也能正常工作。要了解更多信息,请查看 问题: 在许多其他动态语言中,我可以使用eval修改当前环境的状态。我想在球拍上做一些类似的事情。例如,我想写一些类似于: #lang racket (define x 5) (eval '(set! x 6)) (displayln x) 并将x设置为6。在Racket中可以这样做吗?使用名称空间锚可以这样做。具体来说,你想要和 具体

DrRacket can';不要检查更新

系统:MAC OS 10.11.6 错误消息: Error: could not connect to website (url->port: bad reply from server: #<eof>) 错误:无法连接到网站 (url->端口:来自服务器的错误回复:#) 我不知道是否可以简单地将应用程序中的“Racket v6.2.1”文件夹拖到垃圾桶中,然后安装最新版本的DrRacket。不幸的是,这是Racket中的一个错误,在v6.2.1中存在。它已经被修复(由我,

Racket 如何在使用语法/解析匹配文本时忽略绑定

在语法分析中我们可以使用,但这需要考虑绑定。具体来说,它“将任何无标识符的标识符=?与文字id匹配”。我想忽略绑定。具体地说,我想匹配任何一段语法x,以便(equal?(syntax-ex)'一些数据)。在下面的示例中,我希望语法分析能够成功,即使bar具有不同的绑定信息: #lang racket (module m racket (provide foo) (require (for-syntax syntax/parse)) (define-syntax (foo stx)

DrRacket-更新二叉树中的值

我正在编写一个函数,它将生成一个新版本的二叉树bt,其中每个节点的值都是奇数长度字符串,其值将替换为字符串“奇数”。 例如: (check-expect (odd-length (make-node 4 "four" (make-node 7 "seven" empty

Racket 能否在存储另一个函数返回值的函数内创建局部变量?

可以使用在过程中局部绑定变量。这将如下所示: a1 = find-disk-area(r1) a2 = find-disk-area(r2) if( a1 > a2 ): print(a1 - a2) else: print(a2 - a1) 您还可以使用,以达到相同的效果,将标识符绑定到某个表达式的结果: (define (find-disk-area r) (* pi (sqr r))) (define (find-ring-area r1 r2) (le

Racket 从库中提供结构构造函数

我目前正在进行扩展,这是我通过在repo目录中运行racopkginstall安装的库 我试图提供一个新函数,即结构构造函数。目前,我正在racklog.rkt中定义结构,如下所示。然后我从该文件中提供它 ;racklog.rkt (结构我的结构(值)) (提供我的结构) 库的主文件仅提供此文件中的所有内容: ;main.rkt (需要“racklog.rkt”) (提供(全部从“racklog.rkt”)) 但是,当我尝试在需要此模块的文件中使用提供的构造函数(应命名为mystruct)时

Racket 如何使自己的andmap功能短路?

我有: 为了 我得到了正确的答案 然而,当我提出: (andmap1 positive? (list 1 -1 2)) 我犯了一个错误。 如果pred和列表中的元素不匹配,如何使函数停止?(pred可以是任何谓词)您的和map1很好,已经短路了 (andmap1 positive? (list false 1)) 此处短路的含义是,如果x是列表中y之前的一个元素,并且(px)的计算结果为false,则将不计算(py)。在我上面的例子中,(正值?“Hi”)没有计算,因为(p-1)已经计算为fa

Racket 有人能用简单的话解释一下call/cc吗?

我正在学习语言技巧,试图掌握call/cc的实际用途。有人能用简单的话解释一下并举一两个例子吗?谢谢。如果你有一个表达式(+(*23)(/102))一个方案系统不会同时评估所有内容,而是部分评估。方案中没有指定顺序,但让我们设想一下,顺序是从左到右(我认为球拍总是从左到右): 如果执行(*23),则继续计算(/102),然后计算(+result1result2)。Scheme系统实现这一点的方法是在执行之前将代码转换为。上面的表达式变成这样: (λ(k) (*& 2 3. (λ(结果1) (/

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 25 页