小编yeh*_*ehe的帖子

如何判断字符是否是Clojure中的ASCII大写字母

我有这样的seq:

(\$ \# \A \( \* \& \9 \8 \7 \Z \f)
Run Code Online (Sandbox Code Playgroud)

我想过滤掉大写的ASCII字母,如\ A和\ Z.

我试着在标准库中查找但没有运气.

有谁能够帮我?

ascii clojure

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

如何通过ORM在关系数据库中表示代数数据类型?

下面是我用来解析字符串并将结果存储到Python数据结构中的语法.

;; subject_code is a string which matches certain pattern.

code => <subject_code>

prereq => one_of | normal | and | either_or

one_of => “one of” code*

normal => code*

and => prereq “and/plus” prereq

either_or => “either” prereq “or” prereq
Run Code Online (Sandbox Code Playgroud)

代码在这里.

如何通过django ORM将prereq存储到关系数据库中?

我已经浏览了django的文档,但我还没有得到线索.

提前致谢.

python orm database-design django-models algebraic-data-types

5
推荐指数
0
解决办法
342
查看次数

如何在Haskell中编写自定义的show函数

我正在定义Octave类型:

data Octave = 1 | 2 | 3
  deriving (Show, Read, Ord, Enum)
Run Code Online (Sandbox Code Playgroud)

由于'1'对数据构造函数标识符无效,我必须这样做:

data Octave = O1 | O2 | O3
  deriving (Show, Eq, Read, Ord, Enum)
Run Code Online (Sandbox Code Playgroud)

现在,如果我show Octave O1显示"O1",这不是我想要的.我希望结果为"1".我知道我们可以像这样定制我们的Show行为:

instance Show Blabla where                                                                                       
  show (Blabla ints chars list num) =                                                                            
    "integers = " ++ show ints ++ "\n"
Run Code Online (Sandbox Code Playgroud)

但问题是我使用的是枚举类型,这意味着除了标识符名称'O1'之外它没有值.我怎样才能在Haskell中访问它?

另一个问题:我怎么读回来?

read "O1" :: Octave 工作,但我想 read "1" :: Octave

instance Read Octave where
  read "1" = O1
  read "2" = O2
  read "3" = O3 …
Run Code Online (Sandbox Code Playgroud)

enums haskell

4
推荐指数
2
解决办法
1028
查看次数

如何在Clojure中解决整数溢出?

我正在做这个练习.帕斯卡的梯形

我的解决方案是:

(fn pascal[initseq]
  (let [gen-nextseq (fn [s]
                      (let [s1 (conj (vec s) 0)
                            s2 (cons 0 s)]
                        (map + s1 s2)))]
    (cons 
      initseq 
      (lazy-seq 
        (pascal 
          (gen-nextseq initseq))))))
Run Code Online (Sandbox Code Playgroud)

我通过了前三个测试用例,但最后一个失败了.

它说"java.lang.ArithmeticException:integer overflow"

那么,Clojure中有一个大整数,还是有更好的方法来解决问题?

clojure

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

为什么在大多数情况下,group-by函数的结果键按顺序排列,但在使用范围时却没有?

我正在研究这个问题

我的解决方案是:

(fn [s]
  (map #(first %) (group-by identity s)))
Run Code Online (Sandbox Code Playgroud)

前三次测试通过,最后一次测试失败.

因为

(group-by identity (range 50)
Run Code Online (Sandbox Code Playgroud)

给出无序的结果.但我的解决方案强烈依赖于分组功能的有序功能.也就是说,必须保持结果映射中每个键的顺序.即使Doc不能保证这一点,这几乎也是如此.

真奇怪的是:

在此输入图像描述

你看,当参数超过32分组函数给出错误的顺序.结果不是随机的,而是溢出的元素在第一个之后.

为什么?

如何保留分组功能的有序功能还是有更好的解决方案?

clojure

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

有没有更好的方法来解决emacs lib依赖关系?

当我尝试在emacs项目中运行测试文件时遇到一个问题。

例如,我将此项目克隆到主目录中,将cd 克隆到测试目录中,然后用于emacs -batch -l ert -l nrepl-tests.el -f ert-run-tests-batch-and-exit运行测试。但是找不到文件nrepl.el,该文件不在同一目录中。因此,我将其中一个复制到〜/ nrep.el / test中。但是它说“无法打开加载文件:clojure-mode”。这是我要提出的问题。

我确实有clojure-mode和其他使用nrepl.el的库。但是它们都在不同的目录中(在我的情况下是〜/ emacs.d / packs / live / clojure-pack / lib /)。为了运行测试,是否必须将这些文件复制到克隆的nrepl项目中?是否有更好的方法可以像在IDE中一样运行测试文件。例如,在Intellij中,我只需在测试文件中编写import语句,它就会自动为我准备依赖库。这让我很困扰。我想知道是否有针对此问题的最佳实践。

emacs unit-testing elisp dependency-management ert

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

如何使用Haskell中的组合用括号更改函数调用?

这是我写的: (take 2 (repeat " "))

我想在没有括号的情况下将其更改为expr.

我可以用吗 "." 像这样:

ceiling (negate (tan (cos (max 50 x)))) 可以改为 ceiling . negate . tan . cos . max 50

但我试过了 (take 2) . (repeat " ")

(take . (repeat " ")) 2 这两个不工作?

有人帮忙吗?

haskell

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

如何在Clojure中将两个seq中相同索引的元素一起添加

我有

[1 1 1 1 1]
Run Code Online (Sandbox Code Playgroud)

[2 2 2 2 2]
Run Code Online (Sandbox Code Playgroud)

我想要

[3 3 3 3 3]
Run Code Online (Sandbox Code Playgroud)

我试过了

(for [x s1
      y s2
      :when (= (.indexOf s1 x) (.indexOf s2 y))]
   (+ x y))
Run Code Online (Sandbox Code Playgroud)

它给出了错误的结果,因为.indexOf不返回其acctual索引,而是使用其值搜索它.

任何人都可以帮忙吗?

clojure

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