小编Ale*_*ler的帖子

调用Common Lisp中的函数列表

在Clojure中,我可以定义一系列函数,然后将它们称为任何其他值,如下所示:

(doseq [op [+ - * /]]
  (println (op 1 2 3 4)))
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

10
-8
24
1/24
nil
Run Code Online (Sandbox Code Playgroud)

尝试在Common Lisp中执行相同操作只会导致错误:

(dolist (op '(+ - * /))
  (print (op 1 2 3 4))

; in: DOLIST (OP '(+ - * /))
;     (LET ((OP (TRULY-THE (MEMBER / * - +) (CAR #:N-LIST671))))
;       (SETQ #:N-LIST671 (CDR #:N-LIST671))
;       (TAGBODY (PRINT (OP 1 2 3 4))))
; 
; caught STYLE-WARNING:
;   The variable OP is defined but never used.

; in: …
Run Code Online (Sandbox Code Playgroud)

clojure common-lisp lisp-2

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

Clojure - 将PDF/Doc文件提取为简单文本的最佳方法

我正在寻找一个简单的解决方案来解析上传到我的应用程序的每个文件,并转换为简单的文本.我的Web应用程序在Clojure上运行,并且更喜欢API来解析各种文件类型.

file-upload clojure

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

试剂中的交互式列表

我想创建一个 html 元素列表(其中包括查询结果),默认情况下这些元素是隐藏的,但用户可以切换该状态。我在下面尝试了几种不同的方法作为玩具示例,但都无法工作。

此代码正确创建了三个按钮,它们正确地更改了 exps 状态,但不会隐藏内容。

(:require  [reagent.core :as r] )
(def exps (r/atom [true true true]))
(defn like-component []
  [:div   
   (for [ [i r] (map-indexed vector  ["A" "B" "C"])] 
     [:div
       [:button {:on-click #(swap! exps update-in [i] not)}]
       (when (nth @exps i)
          [:pre (str i r)])])])

(r/render [like-component]
      (js/document.getElementById "app")) 
Run Code Online (Sandbox Code Playgroud)

另一方面,下面的代码将仅创建一个元素,但它可以正常工作。

(defn expandable-view [e bool]
  (let [expanded (r/atom bool)]
          (fn []
            [:li
            [:div.expandable
              [:div.header {:on-click #(swap! expanded not)}
               "Click me to expand and collapse"]
              (if @expanded
                [:div.body  (allow-html :pre e)])]]))) …
Run Code Online (Sandbox Code Playgroud)

clojure hiccup clojurescript reagent

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

ClojureScript中单引号标识符和双引号之间有什么区别?

假设我有以下HTML文档元素并且加载了DOM:

<ul id='myUnorderedList' />
Run Code Online (Sandbox Code Playgroud)

当我在Clojure中运行以下代码时

(def my-element (.getElementById js/document 'myUnorderedList'))
Run Code Online (Sandbox Code Playgroud)

价值my-elementnil.

但这有效:

(def my-element (.getElementById js/document "myUnorderedList"))
Run Code Online (Sandbox Code Playgroud)

my-element具有值#object[HTMLUListElement [object HTMLUListElement]].

(def my-element (.getElementById js/document "myUnorderedList"))
Run Code Online (Sandbox Code Playgroud)

我的问题是:ClojureScript中单引号标识符和双引号之间有什么区别?

string dom element clojure clojurescript

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

如何更新嵌套的不可变映射

我正在尝试找到一种更简洁的方法来更新 Scala 中的嵌套不可变结构。我想我正在寻找类似于assoc-inClojure 的东西。我不确定其中有多少类型因素。

例如,在 Clojure 中,要更新嵌套地图的“city”属性,我会执行以下操作:

> (def person {:name "john", :dob "1990-01-01", :home-address {:city "norfolk", :state "VA"}})
#'user/person
> (assoc-in person [:home-address :city] "richmond")
{:name "john", :dob "1990-01-01", :home-address {:state "VA", :city "richmond"}}
Run Code Online (Sandbox Code Playgroud)

我在 Scala 中有哪些选择?

val person = Map("name" -> "john", "dob" -> "1990-01-01", 
             "home-address" -> Map("city" -> "norfolk", "state" -> "VA"))
Run Code Online (Sandbox Code Playgroud)

scala clojure immutability

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

使用默认值和/或没有特定顺序的 Erlang 函数调用

我是 Erlang 新手,试图找出函数调用的默认值的最佳方法,这需要多个变量和/或也不想按特定顺序输入参数。我目前正在使用这种基于 Clojure 方式的松散格式。在Erlang中是否有更好的方式或方法来实现这一点?我还提供了一个 Clojure 示例作为参考:

二郎版本:

some_function_with_defaults() ->
    some_function_with_defaults(#{}).

some_function_with_defaults(Map) ->
    Defaults = #{
                arg1 => 0, % arg1 default value
                arg2 => 1, % arg2 default value
                arg3 => 2  % arg3 default value
              },

  Arguments = maps:merge(Defaults,Map),

  #{arg1 := Arg1} = Arguments,
  #{arg2 := Arg2} = Arguments,
  #{arg3 := Arg3} = Arguments,

  %% Do something with arguments
  [Arg1,Arg2,Arg3].

%% Example call using only defaults
%% some_function_with_defaults().
%%
%% [0,1,2]

%% Example call specifying a specific value …
Run Code Online (Sandbox Code Playgroud)

erlang function clojure default-arguments

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

用Java和C#调用尾部?

我正在阅读有关Clojure的文章,并在当前版本中发现了关于Java不支持尾调用的讨论,并且人们在JVM中抛出异常模拟尾部调用,无论如何,听起来人们正在做一些疯狂的东西.所以这让我想知道C#的尾部调用,同样的问题?

c# java clojure tail-call

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

Haskell相当于Json或Edn

在Javascript中,如果我想存储配置,我使用Json.在Clojure中,我使用EDN,Haskell中推荐什么?YAML?

haskell clojure

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

更简洁的方法来记录记录和地图?

制作地图或记录规范的方式是否比官方规范指南中的方式更简洁?

(defrecord Person [first-name last-name email phone])
(s/def ::first-name string?)
(s/def ::last-name string?)
(s/def ::email ::email-type)
(s/def ::person (s/keys :req-un [::first-name ::last-name ::email]
                        :opt-un [::phone]))
Run Code Online (Sandbox Code Playgroud)

理想情况下,如果我能写出像这样的东西会很好

(defrecord Person [first-name last-name email phone])
(s/def ::person (s/keys :req-un [:first-name string?
                                :last-name string?
                                :email ::email-type]
                        :opt-un [:phone]))
Run Code Online (Sandbox Code Playgroud)

clojure clojure.spec

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

检测Java类是否可加载

我有两个程序:一个CLI程序和一个GUI.GUI是CLI的前端,也是另一个程序的GUI.

我正在导入CLI的类并在GUI中扩展它们以向类添加GUI元素,一切都很棒.

但现在我想拆分我目前嵌入GUI的CLI(作为一个包含的JAR).JAR位于一个固定的位置(/opt/program/prog.jar),该应用程序只能在Linux上使用,因此我意识到这打破了传统的Java思想.

我已经在Manifest文件中编辑了ClassPath以反映这一变化,并且它工作正常.但是,当我删除该文件时,GUI无法加载,因为无法加载该类.

有没有办法尝试加载一个类,如果它不起作用,那么做一些其他的?本质上,我试图捕获ClassNotFound异常,但还没有运气.

java class dynamic classloader

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

如何从cider-error缓冲区跳转到repl缓冲区?

在clojure苹果酒中repl,当一些代码出错时,我必须C-b k杀死苹果酒错误缓冲区,C-x o切换回repl缓冲区.是否有repl直接跳回缓冲区的快捷方式/功能?

clojure cider

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