小编Asu*_*awa的帖子

Clojure,Scheme/Racket和Common Lisp有什么区别?

我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题.

lisp scheme clojure common-lisp racket

112
推荐指数
3
解决办法
3万
查看次数

在哪里可以找到实用的精心设计的数据库模式示例来学习?

我是数据库模式设计的新手,我想了解更多关于如何在现实世界中实现精心设计的数据库方案?

有没有找到这些计划的地方?或者是否有任何书专注于对例子的解释.

database

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

什么是"捕获避免替代"?

在Wiki中阅读Lambda微积分时,遇到了捕获避免替换的术语.有人可以解释它的含义,因为我无法从任何地方找到定义.

谢谢

PS

我想知道的是告诉操作Capture避免替换的原因.如果有人能做到这一点,那将是一个很大的帮助

programming-languages lambda-calculus

30
推荐指数
3
解决办法
5870
查看次数

条件语句的主体内是否有可能存在多个语句?

我主要是一个C++(因此是一个OO /命令式)程序员,我觉得很奇怪的是,在一个条件语句中,每个评估只能有一个语句,例如函数式语言Scheme中的if语句.

例如:

 (let ((arg1 0) (arg2 1))
   (if (> arg1 arg2)
       arg1
       arg2)))
Run Code Online (Sandbox Code Playgroud)

错误的例子:

(let ((arg1 0) (arg2 1))
  (if (> arg1 arg2)
      (arg1 (display "cool"))
      (arg2 (display "not cool"))))
Run Code Online (Sandbox Code Playgroud)

给我一个错误的类型"程序应用程序:预期程序,给定:2;参数是:#void"

这可以通过将所述条件语句放入定义函数体内的不同语句中来解决,例如,条件语句的主体每次都有单独的语句,如下所示:

(if (condition) statement1a statement2a)
(if (condition) statement1b statement2b)
Run Code Online (Sandbox Code Playgroud)

等等...

不言而喻,这不太实际.更不用说重复的代码开销了.

我在这里遗漏了什么,还是没有别的办法?

scheme if-statement conditional-statements

18
推荐指数
3
解决办法
2万
查看次数

期待一个模块声明,发现了别的什么?

我正在研究需要数学/数论库的Racket脚本(在Linux机器上).我现在的整个脚本是这样的:

#!/usr/bin/racket

(require math/number-theory)
Run Code Online (Sandbox Code Playgroud)

是的,它实际上只需要图书馆.

当我尝试运行它时,我得到一个错误,上面写着"预期的'模块'声明:其他东西".

但是,当我在终端中实际启动Racket时:

/usr/bin/racket
Run Code Online (Sandbox Code Playgroud)

并在命令行中输入(需要数学/数论),它将它视为完全有效.

这里发生了什么?

racket

9
推荐指数
1
解决办法
2658
查看次数

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

我正在研究Scheme编译器Stalin.它既大又复杂.此外,如果我理解正确,作者正计划撰写一系列详细介绍实施方面的论文,但从未接触过这样做.

我感兴趣的斯大林方面是全局类型推断:根据它们在程序中其他地方的用法来推断事物的类型.斯大林确实这样做了吗?如果是,如何以及在其代码库中的位置?它是否使用Hindley-Milner算法的变体/扩展?

compiler-construction scheme types hindley-milner

6
推荐指数
1
解决办法
283
查看次数

从DrRacket读入命令行参数

如何在使用racket运行脚本时检测给定的命令行参数?也就是说,相当于Python中的sys.argv,Java中的args []等等......

command-line arguments racket

2
推荐指数
1
解决办法
1203
查看次数

球拍匹配句法和问号

我正在尝试了解球拍的图案匹配文件,并且遇到一些类似以下的问题,我无法解析它。

  • (quasiquote qp)-引入一种准模式,其中的标识符与符号匹配。与准引用表达形式一样,取消引用和取消引用拼接也可以转回正常模式。

http://docs.racket-lang.org/reference/match.html

例:

> (match '(1 2 3)
    [`(,1 ,a ,(? odd? b)) (list a b)])

'(2 3)
Run Code Online (Sandbox Code Playgroud)

它没有解释此示例,“标识符与符号匹配”如何?我猜它与'(1 2 3)模式匹配'(1, a, b)并且b是奇数,但是为什么`(,1 ,a ,(? odd? b))不呢`(1 a (? odd? b)),它在列表成员之间需要逗号吗?特别是`(,?为什么这样呢?真弦!

谢谢!

lisp scheme pattern-matching racket

2
推荐指数
1
解决办法
1598
查看次数

如何使用xrepl启动Racket?

我经常在bash shell中打开Racket,但是为了支持xrepl,我需要先执行 (require xrepl)命令.有没有办法racket自动启动和执行上面的命令?

racket

2
推荐指数
1
解决办法
257
查看次数

不能低于球拍功能

我的proffesor给了我们这个功能:

(: every? : (All (A) (A -> Boolean) (Listof A) -> Boolean))

(define (every? pred lst)
  (or (null? lst)
      (and (pred (first lst))
           (every? pred (rest lst)))))
Run Code Online (Sandbox Code Playgroud)

我无法理解的含义:All (A) (A -> Boolean).请有人可以向我解释 - 变量的含义是什么,函数得到了什么,它做了什么以及回归是什么,因为我无法弄明白.

racket typed-racket

2
推荐指数
1
解决办法
87
查看次数

方案:箭 - >这是什么意思?

我正在学习函数式编程课程,使用SICP一书作为参考.书中的几个地方,我在程序定义中遇到过使用' - >'箭头.

例子:

(define (segments->painter segment-list)
    (lambda ...

(define (tree->list tree)
    (if (...

(define (scheme-number->complex n)
    (make-complex-from-real ...
Run Code Online (Sandbox Code Playgroud)

那么,' - >'箭头意味着什么?它是一个命名约定,表明该过程将一个事物转换为另一个事物; 如树入列表?如果不; 什么是箭头代表什么?

谢谢!

syntax scheme

2
推荐指数
1
解决办法
1672
查看次数