小编Jos*_*lor的帖子

消除我通过like,monads和stuff传递的显式状态

我正在研究F#中的Land of Lisp一书(是的,我很奇怪).对于他们的第一个示例文本冒险,他们使用全局变量变异,我想避免它.我的monad-fu很弱,所以现在我正在做这样丑陋的状态:

let pickUp player thing (objects: Map<Location, Thing list>) =
    let objs = objects.[player.Location]
    let attempt = objs |> List.partition (fun o -> o.Name = thing)
    match attempt with
    | [], _ -> "You cannot get that.", player, objs
    | thing :: _, things ->
        let player' = { player with Objects = thing :: player.Objects }
        let msg = sprintf "You are now carrying %s %s" thing.Article thing.Name
        msg, player', things

let player = { …
Run Code Online (Sandbox Code Playgroud)

monads refactoring f# functional-programming land-of-lisp

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

如果`if`没有评估它的所有参数?

我正在尝试深入学习和理解Lisp编程语言.该函数+按应用顺序评估其参数:

(+ 1 (+ 1 2))
Run Code Online (Sandbox Code Playgroud)

(+ 1 2)将被评估,然后(+ 1 3)将被评估,但if功能的工作方式不同:

(if (> 1 2) (not-defined 1 2) 1)
Run Code Online (Sandbox Code Playgroud)

由于(not-defined 1 2)未评估表单,程序不会中断.

相同的语法如何导致不同的参数评估?如何if定义函数以便不评估其参数?

lisp

10
推荐指数
3
解决办法
836
查看次数

检索大多数特定类的实例

是否可以使用SPARQL查询定义资源(来自DBpedia)?我希望有一些类似于TBox和ABox的内容(概念)语义Web的聚类方法:问题和应用程序(幻灯片10-11).例如,对于DBpedia资源Stephen King,我想:

Stephen_King:人⊓作家⊓男⊓...(最具体的课程)

owl sparql description-logic dbpedia

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

Lisp多次格式化一个字符

我正在寻找一种使用格式多次输出字符的方法.这可能吗?有人可以填写_?_,以便该示例有效吗?

(let ((n 3))
  (format nil "_?_" _?_ #\* _?_ ))
Run Code Online (Sandbox Code Playgroud)

应该回来

=> "***"
Run Code Online (Sandbox Code Playgroud)

lisp format common-lisp

10
推荐指数
4
解决办法
1609
查看次数

泽西岛:我可以在ContainerResponseFilter中添加一个cookie吗?

我有一个ContainerResponseFilter,我试图在其中设置一个cookie如下:

@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
    String cookieName = "ExampleCookie";
    String cookieValue = "SomeData";
    logger.info("Setting cookie " + cookieName + " with value " + cookieValue + " into cookies " + JsonUtils.objectToJson(containerResponseContext.getCookies()));
    containerResponseContext.getCookies().put(cookieName, new NewCookie(cookieName, cookieValue));
}
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

Caused by: java.lang.UnsupportedOperationException: null
    at java.util.AbstractMap.put(AbstractMap.java:203) ~[na:1.7.0_67]
Run Code Online (Sandbox Code Playgroud)

在这里设置cookie是不可能的?如果是的话,我该怎么做?

cookies jax-rs jersey servlet-filters

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

什么是在Emacs和SLIME中调试Common Lisp的有效方法?

我想知道使用Emacs和SLIME以交互方式调试Common Lisp的有效方法是什么.

我之前做过的事情:作为使用IDE(VS和PyCharm)学习C和Python的人,我习惯于设置断点,添加手表,然后踩踏.但是当我开始使用CL时,我发现调试工作流程根本不同.我没有找到设置断点的好方法,通过线条查看变量如何变化.

我使用的哑方法是在代码中添加"print"并反复运行代码,效率非常低.我知道我们可以"检查"SLIME中的变量,但不知道如何以交互方式进行.

我发现的内容:我最近看到了关于摩尔斯电码转换器开发的视频,它展示了如何在SLIME中以交互方式进行调试的完整过程,这一过程非常丰富,具有启发性.就好像我们可以与编译器"交谈"一样.

我想要的是:我在网上搜索但找到了最小的教程,展示了经验丰富的Lisper如何实际开发和调试他们的程序.我渴望学习这样的经历.

  • 如何交互式调试?
  • 有哪些好的做法和提示?如何添加断点和步骤?
  • 您最常使用哪些快捷方式/工具/工作流/在调试时最有用?

debugging emacs sbcl common-lisp slime

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

在Clojure重写Lisp土地的向导游戏

我正试图从"Land of Lisp"重写向导游戏 http://landoflisp.com/wizards_game.lisp

(def *nodes* {:living-room "you are in the living-room. a wizard is snoring loudly on the couch."
          :garden "you are in a beautiful garden. there is a well in front of you."
          :attic "you are in the attic. there is a giant welding torch in the corner."})

(def *edges* {:living-room '((garden west door) (attic upstairs ladder))
          :garden '(living-room east door)
          :attic '(living-room downstairs ladder)})

(defn describe-location [location nodes]
  (nodes location))

(defn describe-path-raw [edge]
  `(there is a ~(last …
Run Code Online (Sandbox Code Playgroud)

lisp jvm clojure land-of-lisp

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

如何更改SBCL的当前目录?

这是容易改变CLISP的当前工作目录:

>cat ~/.clisprc.lisp 
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
  (load quicklisp-init)))

(cd "/media/E/www/qachina/db/doc/money")
(load "money")
Run Code Online (Sandbox Code Playgroud)

但是,似乎cd在SBCL中没有类似的功能.如何用SBCL完成这项工作?

clisp sbcl common-lisp

9
推荐指数
5
解决办法
6935
查看次数

如何在现有数据集上使用替代/新本体

通常在讨论语义数据库和本体的力量时,我听到人们说RDF数据是通用的,因为可以将本体应用于数据以便以不同的方式查看它.

然而,根据我的经验,数据集通常通过谓词与特定本体相关联,即在subject-predicate-object谓词中根据某些本体定义某些属性或关系.因此,例如,在关于电影的查询中,如果没有数据引用某个人的新"电影本体",那么我不能在针对DBPedia或LinkedMDB的查询中使用它的术语,对吧?

然后,我偶尔会看到一个数据集中的"链接",它实际上将一个特定资源连接到另一个具有自己的本体的数据集中的类似资源.即linkedmdb有owl:sameAs,但这似乎并不是人们将本体应用于数据的意思.

它是如何工作的,如何在数据集的SPARQL查询中使用关于某些主题的不同本体?

rdf semantic-web ontology sparql linked-data

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

如何在MarkLogic中处理不区分大小写的SPARQL数据

我试图理解如何最好地处理Marklogic SPARQL数据中的文字,这在任何情况下都可能.我希望能够进行不区分大小写的搜索,但我相信语义查询是不可能的.我想要一个简单的例子:

SELECT *
WHERE { ?s ?p "Red"}
Run Code Online (Sandbox Code Playgroud)

SELECT *
WHERE { ?s ?p "red"}
Run Code Online (Sandbox Code Playgroud)

返回所有值,无论对象是"红色","红色","红色"还是"rED".

我的数据来自另一个具有可变大写规则的来源.目前我唯一能想到的是添加一个额外的三元组,它总是包含小写的文本,所以我总是可以搜索该值.或者,使用不区分大小写的排序规则在MarkLogic中创建一些新的范围查询是否有意义(如果可以在三重数据上进行)?

rdf sparql marklogic

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