小编gal*_*ais的帖子

Nodejs:nodejs中的Kineticjs

我在nodejs中安装了包Kineticjs并出现以下错误消息:

Kinetic.window = Kinetic.document.createWindow();
                                              ^
TypeError: undefined is not a function
    at /kinetic/kinetic.js:608:47
Run Code Online (Sandbox Code Playgroud)

node.js npm html5-canvas kineticjs

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

为什么没有明确类型的Idris片段类型检查?

我刚刚开始学习Idris,我正在阅读" 使用Idris进行类型驱动开发 "一书.第二章的示例练习之一是编写一个函数,给定一个字符串,该函数确定该字符串中单词的平均长度.我的解决方案如下:

average : String -> Double
average phrase =
  let werds = words phrase
      numWords = length werds
      numChars = the Nat (sum (map length werds)) in
  cast numChars / cast numWords
Run Code Online (Sandbox Code Playgroud)

但是,由于这numChars条线,我在解决这个问题时遇到了很多麻烦.出于某种原因,除非我明确使用类型,否则不会进行类型检查the Nat.错误说明:

Can't disambiguate since no name has a suitable type:
        Prelude.List.length, Prelude.Strings.length
Run Code Online (Sandbox Code Playgroud)

这对我来说并没有多大意义,因为无论使用哪个定义length,返回类型都是Nat.这一点得到了以下事实的支持:在REPL中可以无错误地完成相同的操作序列.这是什么原因?

functional-programming type-inference type-conversion idris

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

Idris类型系统属性

理论上可以将任何Coq证明转换为Idris还是有任何限制?更抽象的问题:Idris类型系统在lambda多维数据集上的位置是什么?

这些问题的原因在于我试图了解Idris类型系统如何(和如果)与Coq类型系统相媲美.

coq dependent-type idris

9
推荐指数
0
解决办法
260
查看次数

证明继承人的平等替代财产

我试图从"精益证明中的证据"第7章中理解归纳类型.

我为自己设定了一个任务,证明自然数的继承者有平等的替代属性:

inductive natural : Type
| zero : natural
| succ : natural -> natural

lemma succ_over_equality (a b : natural) (H : a = b) :
  (natural.succ a) = (natural.succ b) := sorry
Run Code Online (Sandbox Code Playgroud)

经过一些猜测和相当详尽的搜索后,我能够满足编译器的几种可能性:

lemma succ_over_equality (a b : natural) (H : a = b) :
  (natural.succ a) = (natural.succ b) :=
    eq.rec_on H (eq.refl (natural.succ a))
    --eq.rec_on H rfl
    --eq.subst H rfl
    --eq.subst H (eq.refl (natural.succ a))
    --congr_arg (? (n : natural), (natural.succ n)) H …
Run Code Online (Sandbox Code Playgroud)

formal-verification theorem-proving dependent-type lean

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

返回语句在 Haskell 中是如何工作的?

考虑这些功能

f1 :: Maybe Int
f1 = return 1

f2 :: [Int]
f2 = return 1
Run Code Online (Sandbox Code Playgroud)

两者都有相同的说法return 1。但结果是不同的。f1赋予价值Just 1f2赋予价值[1]

看起来 Haskellreturn根据返回类型调用了两个不同的版本。我想更多地了解这种函数调用。编程语言中有此功能的名称吗?

haskell typeclass

8
推荐指数
2
解决办法
9220
查看次数

基于Agda论文在Idris中实现总分析器

我正在尝试使用Idris实现总解析器,基于本文.首先,我尝试实现更基本的识别器类型P:

Tok : Type
Tok = Char

mutual
  data P : Bool -> Type where
    fail : P False
    empty : P True
    sat : (Tok -> Bool) -> P False
    (<|>) : P n -> P m -> P (n || m)
    (.) : LazyP m n -> LazyP n m -> P (n && m)
    nonempty : P n -> P False
    cast : (n = m) -> P n -> P m

  LazyP …
Run Code Online (Sandbox Code Playgroud)

parsing parser-combinators agda dependent-type idris

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

应用Type以外的类型级参数

我希望能够明确地将一个除了Type虚拟构造函数之外的其他参数应用于文档目的.但TypeApplications似乎不支持这种情况:

{-# LANGUAGE GADTs, PolyKinds, ScopedTypeVariables, TypeApplications #-}

data EQ :: k -> k -> * where
  Refl :: EQ a a

data Wrap (a :: k) = Wrap (EQ a a)

wrap :: forall (a :: k). Wrap a
wrap = Wrap @a Refl
Run Code Online (Sandbox Code Playgroud)

导致错误

ProxyApply.hs:9:14: error:
    • Expected a type, but ‘a’ has kind ‘k’
    • In the type ‘a’
      In the expression: Wrap @a Refl
      In an equation for ‘wrap’: wrap = Wrap …
Run Code Online (Sandbox Code Playgroud)

haskell type-kinds

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

Coq中计算类型的隐式参数

我有一个库来编写索引类型,而不必显式地索引索引.这通过隐藏不相关的管道导致更清洁的顶级类型.它是这样的:

Section Indexed.

Local Open Scope type.
Context {I : Type} (T : Type) (A B : I -> Type).

Definition IArrow : I -> Type :=
  fun i => A i -> B i.

Definition IForall : Type :=
  forall {i}, A i.

End Indexed.

Notation "A :-> B" := (IArrow A B)   (at level 20, right associativity).
Notation "[ A ]"   := (IForall A)    (at level 70).
Run Code Online (Sandbox Code Playgroud)

然而,Coq忽略了我的要求,使IForall隐式引入的通用量词如下所示:

Fail Definition id {A : nat -> Type} …
Run Code Online (Sandbox Code Playgroud)

types coq

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

检查两个值是否具有相同的头构造函数

我希望能够编写一个函数来检查是否使用相同的头构造函数构建了两个值.这个功能:

  • 数据类型声明的大小不应该是线性的

  • 如果扩展数据类型,应该继续工作

例如,这是不满意的(它是线性的,如果我添加任何额外的构造函数,catchall将使函数无效):

data E = A Int | B String | C

sameCons :: E -> E -> Bool
sameCons t u = case (t, u) of
  (A{}, A{}) -> True
  (B{}, B{}) -> True
  (C{}, C{}) -> True
  _          -> False
Run Code Online (Sandbox Code Playgroud)

在OCaml中,可以使用Obj模块中的不安全函数来完成该操作.我们可以在Haskell中做类似的事情(ghc特定的解决方案也可以)吗?

haskell

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

Haskell是会员功能错误

isMember:: a -> [a] -> Bool
isMember y [] = False
isMember y (x:xs) =
 if y == x then
  True
 else
  isMember y xs
Run Code Online (Sandbox Code Playgroud)

尝试创建一个函数来识别某些东西是否是列表的成员.例如:

isMember 6 [1,2,3,4,5,6]
>True
Run Code Online (Sandbox Code Playgroud)

但是我一直得到一个编译器错误,声明'因使用'=='而导致的(Eq a)没有实例

帮助将不胜感激(我是函数语言中的Haskell&Recursion的新手,所以解释为我五岁.)

haskell functional-programming list

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