我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题.
我是数据库模式设计的新手,我想了解更多关于如何在现实世界中实现精心设计的数据库方案?
有没有找到这些计划的地方?或者是否有任何书专注于对例子的解释.
在Wiki中阅读Lambda微积分时,遇到了捕获避免替换的术语.有人可以解释它的含义,因为我无法从任何地方找到定义.
谢谢
PS
我想知道的是告诉操作Capture避免替换的原因.如果有人能做到这一点,那将是一个很大的帮助
我主要是一个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)
等等...
不言而喻,这不太实际.更不用说重复的代码开销了.
我在这里遗漏了什么,还是没有别的办法?
我正在研究需要数学/数论库的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)
并在命令行中输入(需要数学/数论),它将它视为完全有效.
这里发生了什么?
我正在研究Scheme编译器Stalin.它既大又复杂.此外,如果我理解正确,作者正计划撰写一系列详细介绍实施方面的论文,但从未接触过这样做.
我感兴趣的斯大林方面是全局类型推断:根据它们在程序中其他地方的用法来推断事物的类型.斯大林确实这样做了吗?如果是,如何以及在其代码库中的位置?它是否使用Hindley-Milner算法的变体/扩展?
如何在使用racket运行脚本时检测给定的命令行参数?也就是说,相当于Python中的sys.argv,Java中的args []等等......
我正在尝试了解球拍的图案匹配文件,并且遇到一些类似以下的问题,我无法解析它。
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)),它在列表成员之间需要逗号吗?特别是`(,?为什么这样呢?真弦!
谢谢!
我经常在bash shell中打开Racket,但是为了支持xrepl,我需要先执行 (require xrepl)命令.有没有办法racket自动启动和执行上面的命令?
我的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).请有人可以向我解释 - 变量的含义是什么,函数得到了什么,它做了什么以及回归是什么,因为我无法弄明白.
我正在学习函数式编程课程,使用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)
那么,' - >'箭头意味着什么?它是一个命名约定,表明该过程将一个事物转换为另一个事物; 如树入列表?如果不; 什么是箭头代表什么?
谢谢!
racket ×6
scheme ×5
lisp ×2
arguments ×1
clojure ×1
command-line ×1
common-lisp ×1
database ×1
if-statement ×1
syntax ×1
typed-racket ×1
types ×1