小编haw*_*eye的帖子

如果从生成的代码分支,二进制搜索比硬编码慢?

这个人非常声称二进制搜索(在C编译器中)比从生成的代码中分支的硬编码要慢.(请原谅Clojure代码和古怪的标题 - 这个声称这个人与一般的编译器有关).

他写

我偶尔会在黑暗的角落看到这种代码.当一个人知道他的处理器如何工作,知道他的C编译器如何工作,知道他的数据结构,并且真的,真的需要他的循环快,然后他偶尔会写这种东西.

这是Real Programmers编写的一些代码.

这是二进制搜索示例(请原谅Clojure)

Start: (1 2 3 4 6 8 9 10 11 12)
Finish: ((((1) (2)) ((3) ((4) (6)))) (((8) (9)) ((10) ((11) (12)))))
Run Code Online (Sandbox Code Playgroud)

然后,如果基于硬编码值,他将生成的代码替换为二进制搜索:

(defn lookup-fn-handwritten [x]
  (if (< x 6) 
    (if (< x 3)                         ; x is < 6
      (if (< x 2)                       ; x is < 3
        (if ( < x 1)                    ; x is < 2
          0                             ; < 1
          1)                            ; 1 <= x < 2
        3)                              ; …
Run Code Online (Sandbox Code Playgroud)

c java jvm clojure

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

实现的底层数据库数据库是什么?

我的理解是,datomic是在现有的键值存储之上实现的.有谁知道那是什么?

database clojure datomic

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

Clojure - 用于将地图条目自动转换为函数参数的语法糖?

假设我有以下clojure函数调用:

(def mymap {:a1 1 :a2 2})

(defn my-adder [input-map]
    (let [a1 (:a1 input-map)
          a2 (:a2 input-map)]
      (+ a1 a2)))

(my-adder mymap)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是通过将地图自动转换为params来使my-adder函数更简单的方法 - 例如:

(defn my-adder [(magic-function input-map)]
  (+ a1 a2))
Run Code Online (Sandbox Code Playgroud)

有人能指出我缺少的东西吗?

function clojure map

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

Clojure核心库中有多少函数?

Common Lisp在其核心库中有700多个函数.Clojure在其库中大概有多少?

(其中'核心库'被定义为当您包含[org.clojure/clojure "1.5.1"]在您的内容时可以访问的所有内容project.clj)

function clojure common-lisp

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

幺半群和戒指之间差异的含义是什么?

这是Haskell中monoid的一个例子:

> import Data.Monoid
> Sum 5 <> Sum 6 <> Sum 10
Sum {getSum = 21}
> mconcat [Sum 5, Sum 6, Sum 10]
Sum {getSum = 21}
> getSum $ mconcat $ map Sum [5, 6, 10]
21
> getProduct $ mconcat $ map Product [5, 6, 10]
300
Run Code Online (Sandbox Code Playgroud)

这是Clojure中monoid的一个例子:

(defn plus-monoid
    ([]
        0)
    ([a b]
        (+ a b)))

(plus-monoid) 

(plus-monoid 3 4)

(reduce plus-monoid [2 3 4]) 
Run Code Online (Sandbox Code Playgroud)

这是Haskell中一个环的一个例子:

module Rings where

newtype Matrix r = M [[r]] …
Run Code Online (Sandbox Code Playgroud)

haskell clojure monoids

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

如果使用“安全语言”进行了经过验证的 SSL/TLS 实施,它仍然容易受到 Heartbleed 攻击吗?

作者在此提出主张

形式化 TLS 规范并证明实现与其一致仅表明该实现在逻辑上是正确的。然而,它并不表明实施是安全的。您的实现可能容易受到旁道攻击(特别是定时攻击),但逻辑上仍然正确。

我的问题是:如果使用“安全语言”(即 Haskell、Idris)验证 SSL/TLS 实现或使用定理证明者(Coq、Agda)进行检查,它是否仍然容易受到 heartbleed 攻击?

ssl haskell coq agda idris

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

为什么折叠和减少被认为是基本的 - 当然一切都是根据缺点和汽车来定义的?

我们可以看到,我们可以使用reduce/ foldl1作为我们可以定义其他更高阶函数的函数,例如map,filter和reverse.

(defn mapl [f coll]
  (reduce (fn [r x] (conj r (f x)))
          [] coll))

(defn filterl [pred coll]
  (reduce (fn [r x] (if (pred x) (conj r x) r))
          [] coll))

(defn mapcatl [f coll]
  (reduce (fn [r x] (reduce conj r (f x)))
          [] coll))
Run Code Online (Sandbox Code Playgroud)

我们似乎也可以这样做foldr.下面是mapfilter来讲foldr,从丰富的希基的传感器说话 17:25.

(defn mapr [f coll]
  (foldr (fn [x r] (cons (f x) r))
         () coll))

(defn filterr [pred …
Run Code Online (Sandbox Code Playgroud)

lisp reduce clojure fold higher-order-functions

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

如何在不知道Clojure中的键的情况下将地图构造成键值对?

假设我有一张这样的地图

{:a 1 :b 2 :c 3}
Run Code Online (Sandbox Code Playgroud)

我想像这样映射(注意 - 非工作伪代码):

(mapcat (fn [[:key key-a][:value value-a]] (println "key: " key-a "\n value: " value-a )))
Run Code Online (Sandbox Code Playgroud)

如果没有首先获取函数的键,映射它们并从函数中读回它,这是否可行?

我的问题是:如何在不知道Clojure中的键的情况下将地图解构为键值对?

dictionary clojure destructuring

3
推荐指数
2
解决办法
1118
查看次数

如何在git中获取文件的版本树?

在清除情况下,我可以运行

branchlocation>cleartool vtree <filename>
Run Code Online (Sandbox Code Playgroud)

然后会弹出一个版本树,向我显示该文件的合并。我想在git中做同样的事情。

我认为这是有关的git read-tree-但这与我要寻找的不一样。

我的问题是:如何在git中获取文件的版本树?

git clearcase version-tree

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

Oracle_SID是否与Oracle上的登录名相同?

我来自SQL Server / Sybase背景。

我习惯于使用以下格式来引用特定模式中的表:

SCHEMA_NAME..TABLE_NAME. 
Run Code Online (Sandbox Code Playgroud)

我今天问一位同事关于在Oracle数据库上创建新的“模式”。他的回答是:

在Oracle上,您将获得已登录用户的架构名称。架构名称与登录用户名相同。

这对我来说听起来不太正确。我猜这太简单了,或者有些概念混淆了。

我的假设是Oracle_SID与我在Sybase世界中的“模式”概念相同。

我的问题是:Oracle_SID是否与Oracle的登录名相同?

oracle schema

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