曾经有人在SML中向我展示了一个小技巧,他们在他们的REPL中写出了大约3或4个函数,最后一个值的结果类型非常长(就像许多页面滚动一样长).
有谁知道什么代码生成这么长的类型,或者是否有这种行为的名称?
我想动态设置REPL中的语言,而#lang不是使用"-I"命令行参数.但这给了我错误"读取:#lang在当前上下文中未启用".
是否有我缺少的命令行开关?或者也许我可以使用",metacommand"?我需要这个的原因是因为我希望能够将一个Emacs缓冲区发送到Racket REPL,但是如果该文件以#lang.
新安装.
Scala SBT项目.
完整的信息是:
运行Scala控制台时出错:无法启动进程,工作目录C:\ Program Files(x86)\ JetBrains\IntelliJ IDEA Community Edition 13.1.4\jre\jre\bin不存在
将目录默认设置为当前项目中合理的位置会很好...我想.
我正处于设计框架的早期阶段并且正在愚弄typed/racket.假设我有以下类型:
(define-type Calculate-with-one-number (-> Number Number))
(define-type Calculate-with-two-numbers (-> Number Number Number))
Run Code Online (Sandbox Code Playgroud)
我想要一个派生类型的函数:
(: dispatcher (-> (U Calculate-with-one-number Calculate-with-two-numbers) Number))
(define (dispatcher f args)
(cond [(Calculate-with-one-number? f)
(do-something args)]
[(Calculate-with-two-numbers? f)
(do-something-else args)]
[else 42]))
Run Code Online (Sandbox Code Playgroud)
如何创建类型谓词Calculate-with-one-number?和Calculate-with-two-numbers?在Typed/Racket?对于我可以使用的非函数谓词define-predicate.但目前尚不清楚如何实现函数类型的谓词.
我正在尝试用Racket的scribble/lp编写一个小例子程序.该项目的来源是在Github上.
我遇到的问题是编织html中的链接断开.我已将它作为gh页面提供.对于该项目.
使用命令'Sribble LPexample.scrbl'输出文档时,我收到以下警告:
2013 blog > scribble LPexample.scrbl
[Output to LPexample.html]
Warning: some cross references may be broken due to undefined tags:
(dep ((lib "2htdp/image.rkt") ellipse))
(mod-path "racket")
(dep ((lib "2htdp/image.rkt") beside/align))
(dep ((lib "2htdp/image.rkt") rectangle))
(mod-path "scribble/lp")
Run Code Online (Sandbox Code Playgroud)
并且输出文件在断开的链接下放置红色下划线.
被潦草的文件是LPexample.scrbl.这很简单:
#lang scribble/manual
@require[scribble/lp-include]
@title{Literate Programming Example}
// snip
@lp-include["LPexample.rkt"]
Run Code Online (Sandbox Code Playgroud)
获取断开链接的文字编程文档的部分是第69-86行:
which weaves to this:
@chunk[<blue_square>
(rectangle 100 100 "solid" "blue")]
can be composed into other functions this way:
@verbatim|{
@chunk[<blue_square>
(beside/align "bottom"
(ellipse 20 70 …Run Code Online (Sandbox Code Playgroud) 我一直在研究SICP的最后几个练习,其中几个练习使用高阶函数.目前我正在尝试将我的解决方案中的问题调试到1.45,这会导致arity不匹配.提高误差的功能是两次对定点函数求解器应用平均操作的结果.
它将使我调试的努力了很多容易,如果我可以只转储某种程序表示,鉴于该程序已经通过其他几个能够改变它,它会引发错误之前的程序运行.我看过对DrRacket,增加了调试文件(require racket/trace)和 (require errortrace)我的模块,我认为我熟悉的调试系统的所有功能-但我仍然不知道如何做到这一点.
DrRacket的答案是理想的,但任何事情都有帮助.
我知道我可以阅读文档,但是因为这需要将我的注意力从编辑器和REPL上移开,所以我希望能够看到我所使用的模块所提供的功能列表。
Racket中有和Ruby类似的东西Foo.methods()吗?
在postgres或Mysql中是否可以创建一个索引来帮助同一个表中两列之间的范围比较?
例如,我有一个名为表Test3列:id,col1并且col2,它拥有2000万行.查询如下所示:
SELECT id,col1,col2 from Test where col1 < col2;
Run Code Online (Sandbox Code Playgroud)
查询规划器说它在整个表中使用顺序扫描.像这样的指数会起作用吗?:
CREATE INDEX idx_test on Test(col1,col2);
Run Code Online (Sandbox Code Playgroud)
我已经创建了它,但查询规划器仍然执行顺序扫描.
有没有办法增强该查询以减少执行时间?
我最近开始阅读SICP,并且对将递归过程转换为尾递归形式非常感兴趣。
对于“一维”情况(线性情况),例如斐波那契数列或阶乘计算,进行转换并不难。
例如,正如书中所述,我们可以按以下方式重写斐波纳契计算
(define (fib n)
(fib-iter 1 0 n))
(define (fib-iter a b count)
(if (= count 0)
b
(fib-iter (+ a b) a (- count 1))))
Run Code Online (Sandbox Code Playgroud)
而且这种形式显然是尾递归的
但是,对于“二维”情况,例如计算Pascal三角形(SICP中的Ex 1.12),我们仍然可以轻松编写如下的递归解
(define (pascal x y)
(cond ((or (<= x 0) (<= y 0) (< x y )) 0)
((or (= 1 y) (= x y) ) 1)
(else (+ (pascal (- x 1) y) (pascal (- x 1) (- y 1))))))
Run Code Online (Sandbox Code Playgroud)
问题是,如何将其转换为尾递归形式?