小编Syl*_*ter的帖子

这个xkcd代码做了什么?

在今天的xkcd网站上,以下内容在<script language ="scheme">标记中显示为笑话

那么下面的代码做什么/代表什么?

(define
  (eval exp env)
  (cond ((self-evaluating? exp) exp)
    ((variable? exp)
      (lookup-variable-value exp env))
    ((quoted? exp)
      (text-of-quotation exp))
    ((assignment? exp)
      (eval-assignment exp env))
    ((definition? exp)
      (eval-definition exp env))
    ((if? exp)
      (eval-if exp env))
    ((lambda? exp)
      (make-procedure
        (lambda-parameters exp)
        (lambda-body exp)  env))
    ((begin? exp)
      (eval-sequence (begin-actions exp) env))
    ((cond? exp)
      (eval (cond->if exp) env))
    ((application? exp)
      (apply (eval (operator exp) env)
        (list-of-values (operands exp) env)))
    (else  (error "Common Lisp or Netscape Navigator 4.0+ Required" exp))))
Run Code Online (Sandbox Code Playgroud)

lisp scheme

13
推荐指数
1
解决办法
3396
查看次数

如何让webpack2和下划线模板加载器+ babel工作而不会出现"模块构建失败:SyntaxError:'with'in strict mode(5:0)"

我的webpack2配置中有一个下划线模板加载器,用babel编译.它在编译时失败,因为with它在代码编译代码中使用.以下是我的加载器中的相关部分webpack.config.js:

我在装载程序下有这个部分:

{
    test: /\.html$/,
    use: [
        {
            loader: 'babel-loader',
            query: {
                presets: [
                    ['es2015', { modules: false }],
                    'es2016',
                    'es2017',
                    'stage-3',
                ],
            },
        },
        {
            loader: 'ejs-loader',
        },
    ],
};
Run Code Online (Sandbox Code Playgroud)

这就是我想要的,我得到的:

ERROR in ./src/table/row.html
Module build failed: SyntaxError: 'with' in strict mode (5:0)

  3 | var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
  4 | function print() { __p += __j.call(arguments, '') }
> 5 | with (obj) {
    | ^
  6 …
Run Code Online (Sandbox Code Playgroud)

underscore.js-templating webpack-2 babel-6

7
推荐指数
1
解决办法
550
查看次数

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

我的代码表示错误"应用程序:不是程序"或"调用非程序"

在执行我的代码期间,我在不同的Scheme实现中遇到以下错误:

球拍:

application: not a procedure;
 expected a procedure that can be applied to arguments
  given: '(1 2 3)
  arguments...:
Run Code Online (Sandbox Code Playgroud)

的Ikarus:

Unhandled exception
 Condition components:
   1. &assertion
   2. &who: apply
   3. &message: "not a procedure"
   4. &irritants: ((1 2 3))
Run Code Online (Sandbox Code Playgroud)

鸡:

Error: call of non-procedure: (1 2 3)
Run Code Online (Sandbox Code Playgroud)

开局:

*** ERROR IN (console)@2.1 -- Operator is not a PROCEDURE
((1 2 3) 4)
Run Code Online (Sandbox Code Playgroud)

MIT计划:

;The object (1 2 3) is not applicable.
;To continue, call RESTART with an option number: …
Run Code Online (Sandbox Code Playgroud)

scheme runtime-error racket

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

如何配置Racket解释器以支持命令历史记录?

我刚刚设置了Racket并且一直在尝试翻译.

但是,我似乎无法使用箭头(或Ctrlp/ Ctrln为此)上下命令历史记录或 用于Ctrlr搜索它.

这甚至支持?我可以使用该功能构建它吗?

来自Python背景我非常习惯这些功能,并希望将它们也用于Racket.

readline input-history racket

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

如何在 Quicklisp 中获取包文档

每次使用 Quicklisp 时,我都觉得我在玩彩票。我找不到包含包列表和文档的网页。

正如我搜索一个具体的例子(ql:system-apropos "random-access-list"),因为I F ound SRFI-101的一种实现,它是基于Okasakis纯功能性的数据结构,在CL。我试过这个:

[1]> (ql:system-apropos-list "random-access-lists")
(#<QL-DIST:SYSTEM random-access-lists / random-access-lists-20120208-git / quicklisp 2016-03-18>)
[2]> 
Run Code Online (Sandbox Code Playgroud)

我知道该名称random-access-lists不是很具体,因此可能还有其他具有该名称的包。上次我不太幸运,找到了 4 个部分匹配,其中最匹配的不是我要找的包。

如何找到有关搜索结果的更多信息?

common-lisp quicklisp

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

Nil 不是空列表吗?

我正在学习Scheme,并使用repl.it 的在线解释器。我无法理解为什么会返回#f

(eq? '() 'nil) ; ==> #f
Run Code Online (Sandbox Code Playgroud)

lisp scheme

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

如何检查哈希表中的每个值是否满足Common Lisp中的谓词

我有一个哈希表 (setf ht (make-hash-table)) 里面包含了一些项目,例如(setf (gethash 'first ht) 'first-value),(setf (gethash 'second ht) 'second-value),...

此外,我有一个testarity 的谓词,评估为TNIL.我想检查哈希表的所有第一个条目是否ht满足test谓词.例如,如果哈希表只包含上面给出的两个条目,我想知道它的评估(and (test 'first) (test 'second)).有一个简单的方法吗?

hashtable common-lisp

3
推荐指数
1
解决办法
132
查看次数

如何在LISP中不再递归两次

我正在尝试编写一个程序,它根据给定的数字返回Pell数字序列.

例如,(pellNumb 6)应该返回一个列表(0 1 2 5 12 29 70)

到目前为止这是我的代码.我能够计算数字,但我无法跳过双递归.

(defun base (n)
  (if (= n 0)
      0
      (if (= n 1) 
          1))) 

(defun pellNumb (n)
  (if (or (= n 0) (= n 1))
      (base n)
      (let ((x (pellNumb (- n 2))))
        (setq y (+ (* 2 (pellNumb (- n 1))) x))
        (print y))))
Run Code Online (Sandbox Code Playgroud)

输出(pellNumb 4)2 2 5 12,这是因为我递归(pellNumb 2)两次.

有没有办法跳过它,并将这些值存储在列表中?

谢谢!

lisp common-lisp

3
推荐指数
1
解决办法
89
查看次数

Clojure - 将一个序列拆分为多个序列

我正在开发一个函数,该函数将根据给定数字 x 将日期序列(或其他任何内容)拆分为包含在向量内的多个序列。

   (date1 date2 date3 date4 date5 date6 date7)
Run Code Online (Sandbox Code Playgroud)

因此,给定上面的日期列表并传入变量 2,它将产生下面的向量。

   [(date1 date2) (date3 date4) (date5 date6) (date7)]
Run Code Online (Sandbox Code Playgroud)

到目前为止我的代码如下,但它返回的只是一个包含 nil 的向量。

(defn date-splitter [date-count dates x]
  (loop [i date-count, current-split dates, split-dates (vector)]
        (if (<= i x)
            (conj split-dates (get current-split 1))
            (let [s (split-at x current-split)]
              (recur (int (- i x)) (get s 1) (conj split-dates (get s 0)))))))
Run Code Online (Sandbox Code Playgroud)

我还查看了 split-with 函数,认为当索引除以 x 的模数为零时,我可以使用它来拆分序列,但我对此没有任何运气。

任何帮助将不胜感激。

大卫。

clojure

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