小编cha*_*sey的帖子

阐明不同 minikanren 实现中的搜索算法

我目前正在学习 The Reasoned Schemer 和 Racket 的 miniKanren。

我有三个版本的 minikanren 实现:

  1. 《理性策划者》,第一版(麻省理工学院出版社,2005 年)。我叫它TRS1

    https://github.com/miniKanren/TheReasonedSchemer

    附言。它说它已被执行交错的condi改进版本所取代。conde

  2. 《理性的阴谋家》,第二版(麻省理工学院出版社,2018 年)。我叫它TRS2

    https://github.com/TheReasonedSchemer2ndEd/CodeFromTheReasonedSchemer2ndEd

  3. 《理性策划者》,第一版(麻省理工学院出版社,2005 年)。我叫它TRS1*

    https://docs.racket-lang.org/minikanren/

我对上面的三种实现做了一些实验:

第一个实验:

TRS1

(run* (r)
      (fresh (x y)
             (conde
              ((== 'a x) (conde
                          ((== 'c y) )
                          ((== 'd y))))
              ((== 'b x) (conde
                          ((== 'e y) )
                          ((== 'f y)))))
             (== `(,x ,y) r)))

;; => '((a c) (a d) (b e) (b f))
Run Code Online (Sandbox Code Playgroud)

TRS2

(run* (x y)
      (conde
       ((== 'a x) …
Run Code Online (Sandbox Code Playgroud)

scheme logic-programming racket minikanren reasoned-schemer

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

需要category-extras,但堆栈配置没有指定版本

我正在编写一个小型 Haskell 程序,需要导入两个模块Control.Functor.AlgebraControl.Morphism.Hylo.

我搜索了谷歌。这两个模块可以在category-extras中找到。

所以我添加category-extraspackage.yaml

dependencies:
- base >= 4.7 && < 5
- category-extras
Run Code Online (Sandbox Code Playgroud)

然后调用stack build,却出现错误:

E:\work-category-theory\quick-sort>stack build
Stack has not been tested with GHC versions above 8.6, and using 8.8.3, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail

Error: While constructing the build plan, the following exceptions were
encountered:

In the dependencies for …
Run Code Online (Sandbox Code Playgroud)

haskell hackage haskell-stack

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

Trait mixin 与冲突的成员:为什么我的代码可以成功编译?

抱歉,这个问题可能有点长,因为我想尽可能准确地描述问题和我的理解。

最近在学习Scala的trait系统。

我对冲突成员做了一些实验,见以下代码:

trait TA {
  def play() = println("TA play")
}

trait TB {
  def play() = println("TB play")
}

trait TC {
  def play() = println("TC play")
}

class MyClass extends TA with TB with TC {
}
Run Code Online (Sandbox Code Playgroud)

当然,这段代码按照预期编译失败了:

Error:(13, 8) class MyClass inherits conflicting members:
  method play in trait TB of type ()Unit  and
  method play in trait TC of type ()Unit
(Note: this can be resolved by declaring an override in class MyClass.)
class MyClass extends …
Run Code Online (Sandbox Code Playgroud)

oop scala

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

如何“定义”包中的函数?

对不起,这是一个非常新手的 Common Lisp 问题。

我正在学习 common-lisp 和包系统。

我从http://cl-cookbook.sourceforge.net/packages.html 的“The Complete Idiot's Guide to Common Lisp Packages”开始

在第一章,作者foo在包中定义了一个函数:bob

? (make-package :bob)
#<Package "BOB">
? (make-package :jane)
#<Package "JANE">
? (in-package bob)
#<Package "BOB">
? (defun foo () "This is Bob's foo")
FOO
Run Code Online (Sandbox Code Playgroud)

我在 REPL 中逐行测试了这段代码,但失败了:

; SLIME 2.26
CL-USER> (make-package :bob)
#<PACKAGE "BOB">
CL-USER> (make-package :jane)
#<PACKAGE "JANE">
CL-USER> (in-package bob)
#<COMMON-LISP:PACKAGE "BOB">
BOB> (defun foo () "This is Bob's foo")
; in: DEFUN FOO
; …
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp package

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

Haskell 不支持 unicode 符号构造函数(例如:?)?

例如:

{-# LANGUAGE UnicodeSyntax #-}

data Symbolic n
  = Constant n
  | Variable String
  | Symbolic n :+ Symbolic n
  | Symbolic n :* Symbolic n
  | Symbolic n :? Symbolic n
  deriving (Show)
Run Code Online (Sandbox Code Playgroud)

此代码在 GHCi 中成功加载。

然后我输入:

Constant 2 :* Variable "a"
Run Code Online (Sandbox Code Playgroud)

没关系。

但是当我输入时:

Constant 2 :? Variable "a"
Run Code Online (Sandbox Code Playgroud)

*** 异常::hPutChar:无效参数(无效字符)

这是否意味着 Haskell 不支持 Unicode 符号构造函数?

如何使它支持Unicode符号构造函数?

环境:GHCi 8.6.3 (WinGHCi) Windows 7

谢谢。

新观察:

它什么时候工作?出现在源文件中,但无法输入?在 REPL 中(我使用 WinGHCi)。

unicode haskell symbols ghci

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

XPath 是否支持 else-if 语句?

最近,我使用XSLT 编写了一些个人程序。我很惊讶 XPATH 有“if then else”语句,没有“else if”。

例如,我只能使用:

if *** then ***
else ***
Run Code Online (Sandbox Code Playgroud)

但我不能使用:

if *** then ***
else if *** then ***
else ***
Run Code Online (Sandbox Code Playgroud)

XPath 是否支持 else-if 语句?模拟 else-if 的唯一方法是嵌套 if else?

xml xslt xpath

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