小编Mir*_*lov的帖子

Common Lisp中的条件变量绑定

我想用2个局部变量执行一个函数,但这些变量的值应该取决于某些条件.举例来说,假设我有2个变量xy,我想里面交换他们let如果y > x.交换应该是暂时的,我不想改变状态rotatef.我的代码看起来像:

(setq x 2)
(setq y 1)
(let (if (> x y) ((x y) (y x)) ((x x) (y y)))
  (cons x y)) ; should return (1 . 2)
Run Code Online (Sandbox Code Playgroud)

但是里面的表达式let并不是有效的Lisp.如何有条件地为本地变量赋值?解决方法是将主体放入flet并使用不同的参数调用它,但它看起来很笨拙:

(flet ((body (x y) (cons x y)))
  (if (< x y)
      (body x y)
      (body y x)))
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp conditional-binding

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

Marp-CLI:如何使用导入默认主题的自定义主题

我正在使用 marp-cli 创建讲座幻灯片。为了微调幻灯片内容,我创建了一个自定义 css,它扩展了 marp 默认 css 模板中实现的一些样式规则。

我的目标:我想将custom-theme.css文件中的 css 规则外部化,并将它们从.md,并将它们从幻灯片内容所在的文档中

问题:当使用选项调用custom-theme.cssusing marp-cli时--theme-set,我无法指定我的 css“扩展”默认模板的样式规则。

问题:如何指定 mycustom-theme.css是基于 marp 默认模板定义的?

预先感谢您的支持。

css markdown marp

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

如何在 Marp 演示文稿中设置代码块的样式?

我想增大我的一张 Marp 幻灯片上代码块的字体。

如何设置单个代码块的样式而不影响周围的文本?

markdown slideshow marp

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

RDF三元组的元素应该始终是URI吗?

是否可以在RDF中使用URI作为主题,谓词和对象,或者至少应该在三元组中有一个关键字,例如:

David <http://www.someuri.com/predicate> <http://www.someuri.com/object>
Run Code Online (Sandbox Code Playgroud)

是否可以在RDF文件中使用这种结构,或者所有三元组是否都是URI形式?

例如,如果我有一位名叫大卫的医生,患者和访问日期是以URI的形式.让患者URI为" http://www.hospital.com/patients/ ",日期URI为" http://www.hospital.com/dateofvisit/ ".在这种情况下,您能告诉我如何创建RDF文档.

rdf semantic-web

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

Haskell函数用于交换列表中的每个第二个元素

我想知道如何在Haskell中交换列表中的每个第二个元素.

示例输出应如下所示:

swap [1,2,3,4,5]  
[2,1,4,3,5]
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是什么

swap :: [a] -> [a]  
swap [] = []  
swap (x:xs) = head xs : [x]
Run Code Online (Sandbox Code Playgroud)

但是这只交换前两个元素,并且当我尝试加载包含该函数的文件时,我使该函数递归的任何尝试都会导致错误.如何使其递归?

recursion haskell list

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

列表清单上的操作| 怎么样

当我在Haskell书中看到concat函数时,我想知道如何在Haskell中展平下面的列表.在Python中,我可以这样做,因为我可以在函数中检查它的类型.但在哈斯克尔,我做不到.我如何压扁下面的列表?

input: [[1, 2], [[2, 3], 5], [[[2, 3], [4, 5]], [2, 3]]]
output: [1, 2, 2, 3, 5, 2, 3, 4, 5, 2, 3]
Run Code Online (Sandbox Code Playgroud)

haskell

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

Emacs:打开一个特定的信息部分

当我这样做时describe-function info,文档说:Called from a program, FILE-OR-NODE may specify an Info node of the form "(FILENAME)NODENAME".

我使用这种语法在Emacs手册中打开特定部分eval-expression (info "(emacs)mark").

但现在我有三个问题:

  • 如何找到某个信息文件的文件名?(例如:Emacs Lisp Intro的"elisp")
  • 如何找出部分名称?(例如:"11马克和地区"的"标记")
  • 是否可以在使用之前列出信息文件及其部分eval-expression
  • 可选:是否可以在不运行信息模式的情况下完成上述所有操作?

为了澄清,我的问题来自于节点名称(例如:"Shell")和相应部分的标题(例如:"36 Emacs运行Shell命令")不同.

emacs elisp

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

在Clojure中加入多个懒惰的字符串序列

我有几个字符串:

(def a "some random string")
(def b "this is a text")
Run Code Online (Sandbox Code Playgroud)

现在我想连接它们的一部分来创建一个字符串"some text".不幸的是,下面的两个字符串都不起作用.

(clojure.string/join " " [(take 4 a) (take-last 4 b)])
(str (take 4 a) " " (take-last 4 b))
Run Code Online (Sandbox Code Playgroud)

这是因为函数taketake-last返回延迟序列.问题是:连接多个懒惰的字符串序列并返回一个字符串的正确方法是什么?

编辑:我找到了一个解决方案 - (apply str (concat (take 4 a) " " (take-last 4 a)))- 但这是最​​正确的方法吗?

string concatenation clojure lazy-sequences

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

球拍原始字符串

在Racket中,您必须在字符串中转义反斜杠,因此Windows路径和正则表达式变得冗长.

例如,正则表达式(.*)\1可以用字符串"(.*)\\1"或正则表达式常量表示#rx"(.*)\\1"; 必须转义正则表达式中的\才能将其包含在字符串或regexp常量中.[来源:Regexp语法 ]

在许多语言中,如Perl和Ruby正则表达式在语法上受支持/\([a-z]+\)/,在其他语言中有可选的原始字符串,如在Python中r"\([a-z]+\)".似乎Racket不支持原始字符串,在本地你不需要逃避反斜杠.是否有任何方法来实现它们,第三方库,提案,等等?

也可以看看:

regex string rawstring racket

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

如何将平面列表转换为嵌套的树状结构?

如何将平面列表转换为任意复杂的树状结构?首先,一个简单的例子,转换'(1 2 3 4)'(1 (2 (3 (4)))).我知道如何用经典递归来做到这一点:

(defun nestify (xs)
  (if (null xs)
      (list)
    (list (car xs) (nestify (cdr xs)))))
Run Code Online (Sandbox Code Playgroud)

现在,如果嵌套结构任意复杂怎么办?例如,我想转换'(1 2 3 4 5 6 7 8)'(1 (2 3) (4 (5 6) 7) 8).如何编写能够在任何此类嵌套结构中转换平面列表的通用函数?我可以考虑给出一个带虚拟值的模板.例如:

* (nestify '(1 2 3 4 5 6 7 8) '(t (t t) (t (t t) t) t))
'(1 (2 3) (4 (5 6) 7) 8)
Run Code Online (Sandbox Code Playgroud)

我第一次尝试使用递归和自定义树大小查找功能:

(defun length* (tr)
  "Count number of elements in a tree." …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

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