小编Ped*_*ino的帖子

是否可以计算特定提交的父级数量?

大多数提交都有 1 个父提交。但是,一些提交有多个父级。例如,在--no-ff(无快进)标志下创建的合并提交至少有 2 个父项。

git 中是否有一个命令可以显示特定提交具有的确切父级数量?

git git-commit

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

为什么我不能 (push 3 '()) 在 Common Lisp 的 REPL 中?

我在 Emacs 中使用 Common Lisp 和 Slime。与使用突变相比,我有更多避免突变的经验。

在 REPL 中,我可以执行以下操作:

CL-USER> (defvar so-example '())
SO-EXAMPLE

CL-USER> (push 7 so-example)
(7)
Run Code Online (Sandbox Code Playgroud)

它有效。但是,如果我尝试:

CL-USER> (push 7 '())
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息说:

未定义的函数:(SETF QUOTE)

好的。由于quote是一个问题,我也尝试过:

CL-USER> (push 7 nil)
Run Code Online (Sandbox Code Playgroud)

这也会引发错误消息:

NIL 是一个常量,因此不能设置。

为什么会发生这种情况?为什么说有道理?

对我来说,这很奇怪。

common-lisp read-eval-print-loop

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

在 Slime 的检查器中,检查完一个元素后,如何返回到对象列表?

我正在使用 Slime (Emacs) 和 Common Lisp (SBCL)。计算表达式后,REPL 返回 CL 对象列表:

    (#<BOOKMARK-ENTRY {1009AFB963}> #<BOOKMARK-ENTRY {1009AFD5A3}>
     #<BOOKMARK-ENTRY {1009AFDB53}> #<BOOKMARK-ENTRY {1009AFE0E3}>
     #<BOOKMARK-ENTRY {1009AFE683}> #<BOOKMARK-ENTRY {1009AFEC23}>
     #<BOOKMARK-ENTRY {1009AFF173}> #<BOOKMARK-ENTRY {1009AFF753}>
     #<BOOKMARK-ENTRY {1009AFFCD3}> #<BOOKMARK-ENTRY {1009B00233}>
     #<BOOKMARK-ENTRY {1009B00783}> #<BOOKMARK-ENTRY {1009B00CE3}>
     #<BOOKMARK-ENTRY {1009B01253}> #<BOOKMARK-ENTRY {1009B01823}>
     #<BOOKMARK-ENTRY {1009B01DD3}> #<BOOKMARK-ENTRY {1009B02393}>
     #<BOOKMARK-ENTRY {1009B028B3}> #<BOOKMARK-ENTRY {1009B02E13}>
     #<BOOKMARK-ENTRY {1009B03373}> #<BOOKMARK-ENTRY {1009B03903}>
     #<BOOKMARK-ENTRY {1009B03EB3}> #<BOOKMARK-ENTRY {1009B04453}>
     #<BOOKMARK-ENTRY {1009B049F3}> #<BOOKMARK-ENTRY {1009B04F23}>
     #<BOOKMARK-ENTRY {1009B054A3}> #<BOOKMARK-ENTRY {1009B05AB3}>
     #<BOOKMARK-ENTRY {1009B05FF3}> #<BOOKMARK-ENTRY {1009B06513}>
     #<BOOKMARK-ENTRY {1009B06A83}> #<BOOKMARK-ENTRY {1009B07133}>
     #<BOOKMARK-ENTRY {1009B076B3}> #<BOOKMARK-ENTRY {1009B07C13}>
     #<BOOKMARK-ENTRY {1009B08213}>)
Run Code Online (Sandbox Code Playgroud)

如果我单击检查列表,则会打开一个新窗口,其中列出了所有对象:

#<CONS {1009AFCBB7}>
-------------------- …
Run Code Online (Sandbox Code Playgroud)

common-lisp slime

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

如何使用make-array或coerce将列表转换为Common Lisp中具有相同输出的一维数组(向量)?

我想从一个简单的列表转换:

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

到一维数组(向量):

#(1 2 3)
Run Code Online (Sandbox Code Playgroud)

我发现这个问题很相似,但没有涵盖这个问题。

我也设法找到了实现它的方法。不确定它是否是最好的:

CL-USER> (coerce '(1 2 3) 'vector)
#(1 2 3)
CL-USER> (type-of *)
(SIMPLE-VECTOR 3)
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以使用make-array来达到相同的结果。我试过:


CL-USER> (make-array '() :initial-contents '(1 2 3)) 
#0A(1 2 3)
CL-USER> (type-of *)
(SIMPLE-ARRAY T NIL)

Run Code Online (Sandbox Code Playgroud)

这是接近的,但我不明白#0A#0A(1 2 3)

出于某种我不明白的原因,此输出不适用于进一步的组合,例如aref

CL-USER> (aref #0A(1 2 3) 0)
; Evaluation aborted on #<SIMPLE-ERROR "Wrong number of subscripts, ~W, for array of rank ~W." {1003C07793}>.
Run Code Online (Sandbox Code Playgroud)

Is it possible …

arrays list vector common-lisp

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

Common Lisp 中的 lambda 表达式是宏还是标记?

我正在尝试通过《Common Lisp:符号计算的温和介绍》一书来学习 Common Lisp 。此外,我正在使用 SBCL、Emacs 和 Slime。

在第 7 章中,作者提出以下建议lambda expressions在此处输入图片说明

这让我感到困惑,因为 SBCL 的 REPL 返回:

CL-USER> #'lambda
#<CLOSURE (:MACRO LAMBDA) {1000D736DB}>
Run Code Online (Sandbox Code Playgroud)

显然,作者使用了Lisp Works(不是 100% 确定)。我认为这与上述差异无关。不过,我觉得还是提一下比较好。

我的 SBCL 的 REPL 也返回macro了众所周知的宏,例如and

CL-USER> #'and
#<CLOSURE (:MACRO AND) {1000D7365B}>
Run Code Online (Sandbox Code Playgroud)

请注意,具有“普通”功能的行为例如append是不同的:

CL-USER> #'append
#<FUNCTION APPEND>
Run Code Online (Sandbox Code Playgroud)

这里的这篇文章似乎稍微触及了lambda 表达式的非单一性质。但是,它没有提到任何有关标记的内容

我是否遗漏了 lambda 表达式的本质?

lambda common-lisp markers read-eval-print-loop lisp-macros

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

为什么会发生 `git merge` 但 `git log --graph` 不显示分支?

我不明白 的行为git merge。有时,我合并一个分支,执行后git log --graph,我可以看到分支合并为绘图,如下所示:

\n
    D  \n   / \\\n  C   B\n   \\ /\n    A\n
Run Code Online (Sandbox Code Playgroud)\n

我已经做了

\n
$ git merge feature1 develop \nUpdating 4c3dd3e..a90a849 Fast-forward \nfileA.txt | 1 +  1 file changed, 1 insertion(+)\n
Run Code Online (Sandbox Code Playgroud)\n

有用。我什至可以删除主题分支,这表明该分支不再是不可或缺的并且合并成功:

\n
$ git branch -d feature1 \nDeleted branch feature1 (was a90a849).\n
Run Code Online (Sandbox Code Playgroud)\n

但是,我看不到图纸。我只有一行:

\n
pedro (develop) second-final-project $ git log --graph \n\n* commit a90a84966040e36b994c0146bbd8a666954bee49 (HEAD -> develop)\n| Author: Pedro Delfino <p.delfino01@gmail.com>\n| Date:   Fri Jul 16 12:29:24 2021 -0300\n| \n| …
Run Code Online (Sandbox Code Playgroud)

git git-merge git-log

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

在这种情况下,为什么“class-name”在 REPL 中不起作用?

我正在阅读Sonja Keene 的《Common Lisp 中的面向对象编程》一书。

在第七章中,作者提出:

(class-name class-object)
Run Code Online (Sandbox Code Playgroud)

这使得查询类对象的名称成为可能。

使用 SBCL 和 SLIME 的 REPL,我尝试了:

; SLIME 2.26.1
CL-USER> (defclass stack-overflow () 
           ((slot-1 :initform 1 )
            (slot-2 :initform 2)))
#<STANDARD-CLASS COMMON-LISP-USER::STACK-OVERFLOW>
CL-USER> (make-instance 'stack-overflow)
#<STACK-OVERFLOW {1002D188E3}>
CL-USER> (defvar test-one (make-instance 'stack-overflow))
TEST-ONE
CL-USER> (slot-value test-one 'slot-1)
1
CL-USER> (class-name test-one)
; Evaluation aborted on #<SB-PCL::NO-APPLICABLE-METHOD-ERROR {10032322E3}>.

Run Code Online (Sandbox Code Playgroud)

上面的代码返回以下错误消息:

There is no applicable method for the generic function
  #<STANDARD-GENERIC-FUNCTION COMMON-LISP:CLASS-NAME (1)>
when called with arguments
  (#<STACK-OVERFLOW {1003037173}>).
   [Condition of type …
Run Code Online (Sandbox Code Playgroud)

oop common-lisp class-names

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

Common Lisp 的槽说明符中使用和不使用 `:` 是否有技术原因?或者这只是一个纯粹的惯例?

我正在阅读 Sonja Keene 所著的《Common Lisp 中的面向对象编程》一书。

在第9章中,作者给出了以下示例:

(defclass window ()
    ((x :initarg :x-position :accessor x-position)
     (y :initarg :y-position :accessor y-position)
     (height :initarg :height :accessor window-height)
     (width :initarg :width :accessor window-width)
     (exposed-p :initform nil :accessor exposed-p))
   (:documentation "Foundation of all windows"))
Run Code Online (Sandbox Code Playgroud)

我知道在谈论包时,Common Lisp 中使用:::不使用它超出了纯粹的符号范围。它的使用背后有一个逻辑!

但是,我看不到使用:槽选项/说明符背后的逻辑。例如,考虑上面的例子。

看第一个插槽,x. 有:initarg与 关联的插槽选项:x-position。好的,两者都包括:.

现在,在同一个插槽上,查看:accessor插槽选项。它包括双点:。但是,x-position与之相关的包括:.

这个语法背后有一些逻辑吗?

我最好的假设是语法设计是用来反映处理实例时时刻的差异。因此,缺少双点将表明与 pos 初始化相关的使用,并且包含双点将与正在进行的初始化过程相关:

CL-USER> …
Run Code Online (Sandbox Code Playgroud)

oop syntax common-lisp clos

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

为什么 Clojure 中的“type”函数返回与 Java、Clojure 本身相关的结果,而不是与任何语言相关的结果?

我正在使用 Clojure、Emacs 和 Cider。

在 Cider REPL 中,该type函数返回以下内容:

user> (type true)
java.lang.Boolean

user> (type '(1 2))
clojure.lang.PersistentList

user> (type nil)
nil

Run Code Online (Sandbox Code Playgroud)

从更高层次的理解,我知道Clojure和Java之间存在集成。我认为这是 Clojure 导入 Java 库的一种方式。但是,联系似乎不止于此。

但是,为什么type有时会提到 Java 语言呢?为什么它引用了 Clojure 语言?为什么有时它根本没有提及任何语言(nil)?

types clojure

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

为什么这个用 Clojure、ClojureSript、Figwheel、Lein 构建的 Web 应用程序在源代码版本之后没有在浏览器上更新?

我正在观看 Eric Normand 的前端课程/教程。\n课程是付费私人服务。

\n

但是,他正在使用 GitHub 上的公共存储库,this\none

\n

克隆并执行后lein fig-dev,该项目似乎已成功构建:

\n
2022-08-25 13:46:47.988:INFO::main: Logging initialized @3006ms to org.eclipse.jetty.util.log.StdErrLog\n[Figwheel] Validating figwheel-main.edn\n[Figwheel] figwheel-main.edn is valid \\(\xe3\x83\x84)/\n[Figwheel] Compiling build dev to "resources/public/js/compiled/app.js"\n[Figwheel] Successfully compiled build dev to "resources/public/js/compiled/app.js" in 1.33 seconds.\n[Figwheel] Watching paths: ("src") to compile build - dev\n[Figwheel:SEVERE] /private/var/folders/fh/7d_1drwd2ps3zw03j9ftkqs80000gn/T/jna1153974339277798676.tmp: dlopen(/private/var/folders/fh/7d_1drwd2ps3zw03j9ftkqs80000gn/T/jna1153974339277798676.tmp, 0x0001): tried: \'/private/var/folders/fh/7d_1drwd2ps3zw03j9ftkqs80000gn/T/jna1153974339277798676.tmp\' (fat file, but missing compatible architecture (have (unknown,i386,x86_64), need (arm64e)))\n[Figwheel] Starting Server at http://localhost:3449\n[Figwheel] Starting REPL\nPrompt will show when REPL connects to evaluation …
Run Code Online (Sandbox Code Playgroud)

clojure leiningen clojurescript figwheel

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