小编ben*_*ers的帖子

利用Hindley Milner型推断在SML中类型定义的增长

曾经有人在SML中向我展示了一个小技巧,他们在他们的REPL中写出了大约3或4个函数,最后一个值的结果类型非常长(就像许多页面滚动一样长).

有谁知道什么代码生成这么长的类型,或者是否有这种行为的名称?

functional-programming type-inference ml sml hindley-milner

27
推荐指数
1
解决办法
3267
查看次数

在REPL中使用#lang设置语言

我想动态设置REPL中的语言,而#lang不是使用"-I"命令行参数.但这给了我错误"读取:#lang在当前上下文中未启用".

是否有我缺少的命令行开关?或者也许我可以使用",metacommand"?我需要这个的原因是因为我希望能够将一个Emacs缓冲区发送到Racket REPL,但是如果该文件以#lang.

racket geiser

17
推荐指数
2
解决办法
3323
查看次数

Intellij:"运行Scala控制台时出错:无法启动进程"

新安装.

Scala SBT项目.

完整的信息是:

运行Scala控制台时出错:无法启动进程,工作目录C:\ Program Files(x86)\ JetBrains\IntelliJ IDEA Community Edition 13.1.4\jre\jre\bin不存在

将目录默认设置为当前项目中合理的位置会很好...我想.

configuration scala intellij-idea

12
推荐指数
1
解决办法
1万
查看次数

Elm中的Elm编译器?

几乎每种编译语言都有一个用该语言编写的编译器版本.

有没有用Elm编写的Elm编译器?

elm

10
推荐指数
2
解决办法
1649
查看次数

在Typed/Racket中键入函数类型的谓词

我正处于设计框架的早期阶段并且正在愚弄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 typed-racket

6
推荐指数
2
解决办法
893
查看次数

scribble/lp文档中未解析的链接

我正在尝试用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)

literate-programming racket scribble

5
推荐指数
1
解决办法
199
查看次数

使用trace在球拍中显示一个程序

我一直在研究SICP的最后几个练习,其中几个练习使用高阶函数.目前我正在尝试将我的解决方案中的问题调试到1.45,这会导致arity不匹配.提高误差的功能是两次对定点函数求解器应用平均操作的结果.

它将使我调试的努力了很多容易,如果我可以只转储某种程序表示,鉴于该程序已经通过其他几个能够改变它,它会引发错误之前的程序运行.我看过对DrRacket,增加了调试文件(require racket/trace)(require errortrace)我的模块,我认为我熟悉的调试系统的所有功能-但我仍然不知道如何做到这一点.

DrRacket的答案是理想的,但任何事情都有帮助.

scheme sicp racket

5
推荐指数
1
解决办法
5026
查看次数

如何在球拍模块中找到所有功能的列表?

我知道我可以阅读文档,但是因为这需要将我的注意力从编辑器和REPL上移开,所以我希望能够看到我所使用的模块所提供的功能列表。

Racket中有和Ruby类似的东西Foo.methods()吗?

module racket

5
推荐指数
1
解决办法
629
查看次数

两列中的索引在同一表格中进行比较

在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)

我已经创建了它,但查询规划器仍然执行顺序扫描.

有没有办法增强该查询以减少执行时间?

sql indexing

5
推荐指数
1
解决办法
429
查看次数

方案中的尾递归Pascal三角形

我最近开始阅读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)

问题是,如何将其转换为尾递归形式?

recursion scheme tail-recursion sicp pascals-triangle

5
推荐指数
1
解决办法
4688
查看次数