idris

    2热度

    1回答

    我想在Idris中编写一条记录,但它有一个通用参数,需要受到接口的约束。对于正常的联盟类型,我可以这样写: data BSTree : (a : Type) -> Type where Empty : Ord a => BSTree a Node : Ord a => BSTree a -> a -> BSTree a 但我试图找出做同样的事情,只是用记录的语法。我试过类似

    1热度

    2回答

    作为类型驱动编程的初学者,我对使用==运算符感到好奇。示例证明,仅证明某个类型的两个值之间的相等性并不足够,并且针对特定数据类型引入了特殊的相等性检查类型。在那种情况下,==哪里有用?

    3热度

    1回答

    由于类型是伊德里斯一流的,好像我应该能够编写一个typeOf函数返回其参数的类型: typeOf : a => a -> Type typeOf x = a 然而,当我试图调用这个函数,我得到看起来像一个错误: *example> typeOf 42 Can't find implementation for Integer 我怎样才能正确地实现这个功能typeOf?或者是否存在一些我

    2热度

    1回答

    当我试图通过另一种划分一个整数,我得到以下信息: Idris> 6/8 Can't find implementation for Fractional Integer 究竟是什么意思? 如何使用Idris中的有理数?

    2热度

    1回答

    我写这个函数: ||| Returns the ten largest values in the list. top_ten : Ord a => List a -> List a 我第一次尝试是一个pointfree实现使用功能组成: top_ten = take 10 . reverse . sort 但是这给了以下错误: Main.idr:3:9:When checking ri

    3热度

    1回答

    IO`操作考虑: *lecture2> :let x = (the (IO Int) (pure 42)) 看着它的类型,有什么MkFFI C_Types String String签名的含义是什么? *lecture2> :t x x : IO' (MkFFI C_Types String String) Int 然后我尝试从REPL评估x: *lecture2> :exec x m

    2热度

    1回答

    的类型匹配也许这是基本的,但我不明白,为什么下面的功能FNC纳特解答1,也为FNC整数,这甚至没有包括作为一种模式。 fnc : Type -> Integer fnc Bool = 1 fnc Nat = 2

    26热度

    1回答

    我目前正在通过Type-Driven Development with Idris书。 我在第6章中有两个与示例数据存储设计有关的问题。数据存储是一个命令行应用程序,允许用户设置存储哪种数据,然后添加新数据。 以下是代码的相关部分(稍加简化)。你可以看到在Github上full code: module Main import Data.Vect infixr 4 .+. -- Thi

    1热度

    1回答

    我正在与Idris语法打交道,看来。 module Test data Nat = Z | S Nat Eq Nat where Z == Z = True S n1 == S n2 = n1 == n2 _ == _ = False 这抱怨,出现以下错误(V1.1.1): .\.\Test.idr:5:8: error: expected: "@",

    4热度

    1回答

    下面的完整代码示例(成功编译)是我的问题的一个简化和稍微人为的例子。 NatPair是一对Nat秒,我想“升降机”的二进制Num操作NatPair逐点,使用功能lift_binary_op_to_pair。 但是我无法执行Num NatPair,因为NatPair不是数据构造函数。 所以,我把它包在一个类型WrappedNatPair,我可以提供一个Num实施这种类型,随着+和*相应的“解禁”的版