- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在迈出 Common Lisp 的第一步感谢 clouchdb http://common-lisp.net/project/clouchdb/#examples
我设法从 couchdb 中获取了一些简单的数据
(invoke-view "hulk" "hulk" )
((:|total_rows| . 2) (:|offset| . 0) (:|rows| ((:|id| . "gjc") (:|key| . "hulk") (:|value|
(:|_id| . "gjc2321o3io13") (:|_rev| . "3-b6433781c65460f2c9b1f1a153953171")
(:NAME . "Dr Bruce Banner") (:|kind| . "users") (:|username| . "hulk") (:|title| . "gamma r adia
tions: what to do ?"))) ((:|id| . "irnmn239223") (:|key| . "ironman") (:|value| (:|_id| . "irnmn2 39223")
(:|_ rev| . "5-2b6cf739d24b1208fe8eca70e37ffdc9") (:|name| . "tony stark") (:|title| .
(:|name| . "tony stark") (:|title| . "why iphone 5 sucks - but i own one \"") (:|kind| . "users") (:|username| . "ironman") (:|text| . "welcome to post number one ......")))))
7>
我正在使用 SEXML 来显示 HTML 记录,所以我的 HTML 显示模板如下所示
;;static here
(<:h2 "((LISP RETRO BLOG))")
(<:h3 "(( ***** RETRO BUT STILL COOL *****))")
(<:p "( (MADE IN LISP ))")
(<:p "READY.")
(<:img :src "/img/prompt.gif" :alt "cursor"))
;;this is a variable
(<:p "universal time: " mytime)
现在我会通过上面提到的结果创建一个简单的循环(例如用户名是 ironman 和 hulk)以显示类似
的内容 (<:p "Welcome!" username)
很抱歉为最终可能是一个非常简单的循环发布了这么多代码。我确实阅读并尝试了示例 (http://psg.com/~dlamkins/sl/chapter05.html) 和其他资源,但我可能遗漏了一些非常基本的东西,非常感谢您的帮助。请注意,couchdb 文档可能具有不同的字段,因此它与循环遍历具有模式的某些记录并不完全相同。这可能是相关的,例如如果一个文档是一篇博客文章,它可能包含也可能不包含标签,所以我可能想显示/创建一个包含文档中所有可用数据的页面(可能不包括 _id)。
如果有什么不清楚的地方,请发表评论,我很乐意编辑问题。
提前致谢!
最佳答案
如果重新格式化输出数据以使其更具可读性,您将更好地理解输出数据。像这样:
((:|total_rows| . 2) (:|offset| . 0)
(:|rows|
((:|id| . "gjc") (:|key| . "hulk")
(:|value|
(:|_id| . "gjc2321o3io13")
(:|_rev| . "3-b6433781c65460f2c9b1f1a153953171")
(:NAME . "Dr Bruce Banner")
(:|kind| . "users")
(:|username| . "hulk")
(:|title| . "gamma radiations: what to do ?")))
((:|id| . "irnmn239223") (:|key| . "ironman")
(:|value|
(:|_id| . "irnmn2 39223")
(:|_ rev| . "5-2b6cf739d24b1208fe8eca70e37ffdc9")
(:|name| . "tony stark")
(:|title| .
;; here you repeat name and title, so the previous and next lines are erroneous
(:|name| . "tony stark")
(:|title| . "why iphone 5 sucks - but i own one \"")
(:|kind| . "users")
(:|username| . "ironman")
(:|text| . "welcome to post number one ......")))))
因此,您通过 clouchdb 从 CouhcDB 获得的是一个特殊结构的列表,用 Lisp 的说法称为 alist。有一组用于处理列表的函数,其中最重要的是 ASSOC
。
结果告诉您,您有 2 行,每一行都将数据作为另一个列表保存。要迭代它们,您可以使用以下函数:
(defun maprows (fn data)
(mapcar fn (cdr (assoc :|rows| data))))
现在您必须向MAPROWS
传递一个参数FN
的函数。例如,如果您只想以合理的方式打印值,则可以传递以下函数。
(defun print-row (record)
(dolist (pair (cdr (assoc :|value| record)))
(format t "~A: ~A~%" (car pair) (cdr pair)))
(terpri))
让我们看看它是如何工作的:
CL-USER> (maprows 'print-row
'((:|total_rows| . 2) (:|offset| . 0)
(:|rows|
((:|id| . "gjc") (:|key| . "hulk")
(:|value|
(:|_id| . "gjc2321o3io13")
(:|_rev| . "3-b6433781c65460f2c9b1f1a153953171")
(:NAME . "Dr Bruce Banner")
(:|kind| . "users")
(:|username| . "hulk")
(:|title| . "gamma radiations: what to do ?")))
((:|id| . "irnmn239223") (:|key| . "ironman")
(:|value|
(:|_id| . "irnmn2 39223")
(:|_rev| . "5-2b6cf739d24b1208fe8eca70e37ffdc9")
(:|name| . "tony stark")
(:|title| . "why iphone 5 sucks - but i own one \"")
(:|kind| . "users")
(:|username| . "ironman")
(:|text| . "welcome to post number one ......"))))))
_id: gjc2321o3io13
_rev: 3-b6433781c65460f2c9b1f1a153953171
NAME: Dr Bruce Banner
kind: users
username: hulk
title: gamma radiations: what to do ?
_id: irnmn2 39223
_rev: 5-2b6cf739d24b1208fe8eca70e37ffdc9
name: tony stark
title: why iphone 5 sucks - but i own one "
kind: users
username: ironman
text: welcome to post number one ......
(NIL NIL)
如您所见,MAPROWS
也收集 FN
的应用结果,底层 MAPCAR
也是如此。
关于lisp - Common LISP 中的简单 CouchDB 获取和显示记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683707/
你们能帮帮我吗,这是我们的讲师给我们的教程问题,无论我们尝试了多少,我们实际上似乎都无法破解它。请帮忙 ; perform some type/error checking, ; then ca
在 Common Lisp 中编写、编译和测试一个函数,该函数接受一个列表并计算列表中正整数的总数。必须编译然后执行包含函数的 .lisp 文件。在编译该文件后开始传递它,列出要生成的结果的结果,从而
我是 Lisp 初学者,我很难理解为什么下面的代码会给我一个错误。 (dolist (elem '(mapcar mapcon)) (when (fboundp `
我听说 Lisp 可以让你重新定义语言本身,我也试图研究它,但没有任何地方明确的解释。有人有一个简单的例子吗? 最佳答案 Lisp 用户将 Lisp 称为 可编程编程语言 .用于符号计算 - 用符号计
Closed. This question is off-topic. It is not currently accepting answers. Learn more。 想改进这个问题吗Updat
这些是 cons 参数的不同组合的输出。我刚开始学习 lisp。有人可以帮我理解这些吗? Break 80 [81]> (CONS '(A) 'B) ((A) . B) Break 80 [81]>
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我想问一下为什么这个功能不起作用... (defun nenum(ls) (cond ((null ls) nil) ((listp car(ls)) (nenum (rest ls)
如果我有一个原子,例如“a4”,我需要能够将 1 添加到“4”部分以使其成为 a5,但是因为它被认为是一个字符串,所以这是不可能的,所以如果我可以拆分 (a4 ) 到 ((a)(4)) 中,然后我可以
我有一个关于动态构建函数(或类似的东西)的问题。在 Java 中,我可以通过编程将一些 Source 写入字符串,编译该字符串并像函数一样执行它多次。 假设我有一些遗传算法来创建最佳代码以获取 n 个
我是 Common Lisp 的新手,正在学习教程,但无法全神贯注 (equal '(reverse (a b)) '(b a))) 返回零。 非常感谢您的协助。 M. 最佳答案 在 lisp 中引
我有一个使用列表表示的树。例如: (1 ((2 (3)) (3 (2)))) (2 ((1 (3)) (3 (1)))) (3 ((1 (2)) (2 (1)))))` 现在我需要在维护层次结构树的同
在此站点:http://www.gigamonkeys.com/book/practical-a-simple-database.html有如下列出的用户入口函数: (defun prompt-rea
我对 lisp 比较陌生,对在以下上下文中使用嵌套列表的最佳方法很好奇: 所以,我有以下功能: (defun get-p0 (points) (loop for (label x y) in
我正在为 CLOS 类编写一个函数,该函数反转所述类对象的列表元素。 我有一个返回反向列表的方法,但如何让它将对象的列表设置为该列表?我可以在存储列表的函数中有一个实例变量,然后将元素设置为那个吗?或
我知道,严格来说,没有编译语言或解释语言这回事。 但是,一般来说,LISP 是用来编写 Python、bash 脚本、批处理脚本之类的脚本的吗? 还是像 C++、JAVA 和 C# 这样的通用编程语言
在此站点 http://jatha.sourceforge.net/快速函数的示例是通过递归。是不是递归通常比 Lisp 中的迭代更快并且性能更好? 编辑:Lisp 是否比其他语言更优化递归? 最佳答
另一个新手(常见)LISP 问题: 基本上在大多数编程语言中,函数都有一种方法接收对变量的引用而不仅仅是值,即通过引用传递而不是通过值传递。比方说,为了简单起见,我想编写一个 LISP 函数来接收一个
这个问题在这里已经有了答案: How do I find the index of an element in a list in Racket? (3 个答案) 关闭 9 年前。 如果我有这样的列
我在为这个程序生成正确的输出时遇到了一些问题。我的输出几乎是正确的,但缺少一些步骤。我的代码如下: (defun kt (x y m n) ;set the
我是一名优秀的程序员,十分优秀!