小编Ves*_*sna的帖子

如何组合两个列表中的元素

我想组合两个列表中的元素,我的程序看起来像这样

(ns datamodel

(:use 
[net.cgrand.enlive-html :as en-html ])
(:require
[clojure.zip :as z] 
[clojure.data.zip.xml :only (attr text xml->) :as xz]
[clojure.xml :as xml ]
[clojure.data.zip.xml :as zf]
 [clojure.java.io :as io]
))
(def data-url "http://api.eventful.com/rest/events/search?app_key=4H4Vff4PdrTGp3vV&keywords=music&location=Belgrade&date=Future")
(defn map-tags-contents [url & tags]
  (map #(hash-map % (keyword (last tags)))
   (mapcat (comp :content z/node)
      (apply xz/xml->
             (-> url xml/parse z/xml-zip)
              (for [t tags]
                 (zf/tag= t)
               )))))
(def titles (map-tags-contents data-url :events :event :title))
(def descriptions (map-tags-contents data-url :events :event :description))
(defn create-map [](for [el1 titles 
  el2 …
Run Code Online (Sandbox Code Playgroud)

maps list clojure

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

用于创建记录的Clojure宏

我写了一个用于创建记录的宏

(defmacro def-entity [name & value]
 `(do
    (defrecord ~name (vector  ~@value))
    ))
Run Code Online (Sandbox Code Playgroud)

我创建了一个实体

(def-entity p a b)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试创建一个具体的实例(def something(p."a""b"))时,我收到此消息java.lang.IllegalArgumentException:找不到类user.p(repl-1:40)的匹配ctor.所以我必须提供3个参数,像这样(def某人(p."a""b""x"))并且它放置像这样的值

 (-> someone :a)
 "b"
 (-> neko :p)
 nil
Run Code Online (Sandbox Code Playgroud)

我似乎不明白发生了什么?

macros record clojure

0
推荐指数
1
解决办法
529
查看次数

标签 统计

clojure ×2

list ×1

macros ×1

maps ×1

record ×1