小编Amb*_*ose的帖子

在SWI-Prolog中[a | b | c]评价什么?

prolog中的管道运算符返回一个或多个原子头和尾部列表.

?- [a,b,c] = [a,b|[c]].
true.
Run Code Online (Sandbox Code Playgroud)

在单个匹配中嵌套多个管道可以这样做:

?- [a,b,c] = [a|[b|[c]]].
true.
Run Code Online (Sandbox Code Playgroud)

该声明[a|b|c]对a,b和c的推断是什么?

编辑

到目前为止,我所能推断的是:

?- [a,b,c] = [a|b|c].
false.
Run Code Online (Sandbox Code Playgroud)

我对找到答案的任何技术更感兴趣,而不是回答这个边缘无用的问题.

EDIT2
我显然不太熟悉prolog,一个简单的任务回答了我的问题......

?- R = [a|b|c].
R = [a| (b'|'c)].
Run Code Online (Sandbox Code Playgroud)

究竟发生了(b'|'c)什么?

pipe prolog cons iso-prolog

9
推荐指数
3
解决办法
3988
查看次数

这个clojure.core.typed类型错误是什么意思?

我想得到clojure.core.typed类型检查传递,但我得到一个我不明白的类型错误.

我的问题是:

  • 下面的错误是什么意思?
  • 我该如何解决?

这是我的代码(我意识到这是不正确的):

(ns clj.util.map
  (:require [clojure.core.typed :as t]))

(t/ann map-vals
       (All [k v1 v2]
            (Fn [ (Fn [(t/Option v1) -> (t/Option v2)])
                  (t/Option (t/Map k v1)) ->
                  (t/Option (t/Map k v2)) ])))

(defn map-vals
  ;; FIXME: Incorrect code
  "Apply a function to each of the values in a map, returning the updated map."
  [f hm]
  (t/doseq> [k :- Any (keys hm)]
            (assoc hm k (f (get hm k)))))
Run Code Online (Sandbox Code Playgroud)

这是输出lein typed check clj.util.map:

Initializing …
Run Code Online (Sandbox Code Playgroud)

types clojure clojure-core.typed

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

标签 统计

clojure ×1

clojure-core.typed ×1

cons ×1

iso-prolog ×1

pipe ×1

prolog ×1

types ×1