小编Mad*_*ist的帖子

测试字符串是否包含组成另一个字符串的所有字符

我正在尝试使用 Javascript 来查看某个字符串是否包含组成另一个字符串的所有字符。

例如,单词“hello”包含组成单词“hell”的所有字符。此外,单词“hellowy”包含组成单词“yellow”的所有字符。

最重要的是,无论两个字符串中的字符顺序如何,该方法都需要正常工作。此外,字符数也很重要。“Hel”不包含构成“hell”的所有字符。这严格指的是字符数:需要两个 l 才能组成单词“hell”,而“hel”只有一个。

进一步澄清问题,我并不担心在从字符串的字符组成子字符串后是否留下一些“未使用”的字符。也就是说,“hell”仍然应该包含单词“hell”的所有字母。

我怎样才能有效地完成这个任务?也许有正则表达式解决方案?速度在某种程度上是一个问题,但并不是绝对关键。

javascript regex string algorithm

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

TypeScript在MacOS上的Coda中突出显示

我想让我的Coda编辑器正确地突出显示TypeScript.该页面说明支持TypeScript

https://library.panic.com/coda-ios/cios-syntax-modes/

但是,在我的Coda(这是最新的)中,支持的语言列表有所不同.如何让TypeScript正确突出显示?

macos coda typescript

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

发现常见Lisp的“核心”实体和宏

在阅读彼得·塞贝尔的“实用Common Lisp的”,我了解到,除了像列表处理和评估语言的核心部分,也有像宏loopdo等:使用这些核心结构写入。

我的问题有两个方面。首先,Lisp的“核心”到底是什么?如果需要,可以从中重新创建其他内容的最低限度是什么?第二部分是在哪里可以看到作为Common Lisp的一部分而实际上是用Lisp编写的宏的代码?附带的问题是,当编写Lisp实现时,他用什么语言编写?

lisp macros clisp common-lisp

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

Common Lisp宏中的词法绑定

我目前正在通过Graham的On Lisp工作,发现这一点很难理解:

绑定.词汇变量必须直接出现在源代码中.setq例如,没有计算第一个参数,所以任何构建的都setq必须是一个扩展为a的宏setq,而不是一个调用它的函数.同样对于运算符,例如let,其参数在lambda表达式中作为参数出现,对于像扩展为lets的宏这样的运算,依此类推.任何要更改其参数的词法绑定的新运算符都必须写为宏.

这来自第8章,其中描述了何时应该和不应该使用宏来代替函数.

他在这一段中究竟是什么意思?有人会给出一两个具体的例子吗?

非常感激!

lisp macros common-lisp lexical-scope

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

如何使用特殊运算符/表单在Common Lisp中实现"+"

On Lisp(第9页)中,可以找到以下声明:

函数是Lisp程序的构建块.它们也是Lisp的构建块.在大多数语言中,+运算符与用户定义的函数完全不同.但Lisp有一个模型,函数应用程序,用于描述程序完成的所有计算.Lisp +运算符是一个函数,就像你自己定义的函数一样.事实上,除少数运算符称为特殊表单外,Lisp的核心是Lisp函数的集合.什么阻止你添加到这个系列?什么都没有:如果你想你想的Lisp可以这样做,你可以把它写自己,和你的新功能将被视为就像内置的.

我的问题是如何+使用以下特殊运算符实现运算符?或者实际上有更多的运营商在使用,格雷厄姆只是不精确和戏剧化?

block      let*                  return-from      
catch      load-time-value       setq             
eval-when  locally               symbol-macrolet  
flet       macrolet              tagbody          
function   multiple-value-call   the              
go         multiple-value-prog1  throw            
if         progn                 unwind-protect   
labels     progv                                  
let        quote    
Run Code Online (Sandbox Code Playgroud)

有没有办法查看这些函数的源代码?

function common-lisp special-form

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

当全局声明Space Special时,违反了COMMON-LISP包的锁定

我试图在SBCL的顶部做这样的事情:

CL-USER> (defvar space " ")
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

Lock on package COMMON-LISP violated when
globally declaring SPACE SPECIAL while in package
COMMON-LISP-USER.
   [Condition of type SYMBOL-PACKAGE-LOCKED-ERROR]

Restarts:
 0: [CONTINUE] Ignore the package lock.
 1: [IGNORE-ALL] Ignore all package locks in the context of this operation.
 2: [UNLOCK-PACKAGE] Unlock the package.
 3: [RETRY] Retry SLY mREPL evaluation request.
 4: [*ABORT] Return to SLY's top level.
 5: [ABORT] abort thread (#<THREAD "sly-channel-1-mrepl-remote-1" RUNNING {10025F6303}>)

Backtrace:
  0: (PACKAGE-LOCK-VIOLATION #<PACKAGE "COMMON-LISP"> :SYMBOL SPACE :FORMAT-CONTROL "globally …
Run Code Online (Sandbox Code Playgroud)

common-lisp package

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

在Linux上获取Common Lisp进程ID

我想知道是否有办法从Common Lisp的REPL中获取Linux的PID(进程ID).也就是说,我想从过程本身的REPL中知道SBCL或Allegro过程的ID.

linux pid common-lisp

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

在Common Lisp中获取宏的堆栈跟踪模拟

我可能会要求不可能,但我仍在疑惑.

是否有可能获得宏的堆栈跟踪的模拟?也就是说,如果在某个函数中设置了一个断点,那么宏栈跟踪将列出宏扩展的所有宏(可能带有它们的输入)以达到代码中的那个级别.

据我所知,目前这是不可能的,但可能是由于我的理解浅薄.Allegro或SBCL是否允许或跟踪此类信息?看起来这对于调试宏非常有用.

任何帮助或建议表示赞赏.

macros trace common-lisp stack-trace

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

在Common Lisp中的Progn中加载包

我正在尝试制作一个简单的表单,它将自动加载Slynk在图像上.

到目前为止,我有这个:

(progn 
    (load "/home/user/asdf.lisp")
    (format t "~% Loaded ASDF")
    (push "/home/user/.emacs.d/elpa/sly-20180708.712/slynk/" asdf:*central-registry*)
    (format t "~% Added SLYNK path to ASDF:*CENTRAL-REGISTRY*")
    (asdf:load-system :slynk)
    (format t "~% Loaded ASDF system")
    (slynk:create-server :port 4007  :dont-close t)
    (format t "~% Created SLYNK server on port 4007")
    (setf slynk:*use-dedicated-output-stream* nil)
    (format t "~% Set *USE-DEDICATED-OUTPUT-STREAM* to NIL"))
Run Code Online (Sandbox Code Playgroud)

问题是,每当我尝试在REPL中评估此表单时,我都会收到以下错误:

Error: "ASDF" is not a known package.

Restart actions (select using :continue):
 0: Return NIL
 1: Return to Top Level (an "abort" restart).
 2: Abort entirely …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

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

Emacs中的Common Lisp Inferior Lisp缓冲区

我想知道为什么Emacs中的Common Lisp缓冲区被称为"Inferior Lisp"?那就是不如什么?是什么原因?

另外,理解缓冲区基本上是运行Lisp实现的shell是否正确,与在终端中运行它的方式非常相似?

最后,像SLIME和Slynk这样的事情如何与此相关?

lisp emacs elisp process common-lisp

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