我想用2个局部变量执行一个函数,但这些变量的值应该取决于某些条件.举例来说,假设我有2个变量x和y,我想里面交换他们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) 我正在使用 marp-cli 创建讲座幻灯片。为了微调幻灯片内容,我创建了一个自定义 css,它扩展了 marp 默认 css 模板中实现的一些样式规则。
我的目标:我想将custom-theme.css文件中的 css 规则外部化,并将它们从.md,并将它们从幻灯片内容所在的文档中
问题:当使用选项调用custom-theme.cssusing marp-cli时--theme-set,我无法指定我的 css“扩展”默认模板的样式规则。
问题:如何指定 mycustom-theme.css是基于 marp 默认模板定义的?
预先感谢您的支持。
我想增大我的一张 Marp 幻灯片上代码块的字体。
如何设置单个代码块的样式而不影响周围的文本?
是否可以在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文档.
我想知道如何在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)
但是这只交换前两个元素,并且当我尝试加载包含该函数的文件时,我使该函数递归的任何尝试都会导致错误.如何使其递归?
当我在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) 当我这样做时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").
但现在我有三个问题:
eval-expression?为了澄清,我的问题来自于节点名称(例如:"Shell")和相应部分的标题(例如:"36 Emacs运行Shell命令")不同.
我有几个字符串:
(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)
这是因为函数take和take-last返回延迟序列.问题是:连接多个懒惰的字符串序列并返回一个字符串的正确方法是什么?
编辑:我找到了一个解决方案 - (apply str (concat (take 4 a) " " (take-last 4 a)))- 但这是最正确的方法吗?
如何将平面列表转换为任意复杂的树状结构?首先,一个简单的例子,转换'(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)