algebraic-data-types

    16热度

    2回答

    上Inductive Data Types and Pattern Matching状态阿格达手册: 为了确保规范化,感性的发生必须出现在严格正位置。例如,下面的数据类型是不允许的: data Bad : Set where bad : (Bad → Bad) → Bad 因为有坏的参数来构造一个负的发生。 为什么这个要求对于归纳数据类型是必需的?

    15热度

    2回答

    我很难理解为什么这两个片段在所谓的“穷人的严格分析”下产生不同的结果。 第一个例子使用data(假设正确的应用型实例): data Parser t a = Parser { getParser :: [t] -> Maybe ([t], a) } > getParser (pure (,) <*> literal ';' <*> undefined) "abc" **

    3热度

    1回答

    根据数据类型的定义,我有一个问题: 可以在定义中使用符号或数字吗? 举例来说,如果我想创建一个数据类型为低,等号当然 data Signs = Lo | Eq 的下面的代码工作的构造罗代表“<”和构造函数公式为“=”。 但我不能使用“真实”的迹象。例如,下面的代码将无法正常工作 data Signs = Lo "<" | Eq "=" type Signs = "<" | "=" type

    0热度

    2回答

    在我的考试中,我得到了这个表达式,并且未能构造出二叉树。解决方案是什么? (5a-3b)^2*(3a+5b)^3 我画的树从上述表达类似 * /\ / \ ^ \ /\ \ / \ \ - 2 ^ /\ /\ / \ + 3 * * /\ /\ /\ / \ 5 a 3 b * *

    3热度

    7回答

    我的代码片段看起来是这样的: data SomeData = A | B | C | D | E deriving (Show, Enum) ,我希望能够达到一定的数值​​容易映射到这些类型。说我想有映射到SomeData型char S,我可能会做它像这样: mappings = zip "abcde" [A, B, C, D, E] 这将产生[('a',A),('b',B)...]等。我

    3热度

    2回答

    我必须构建一个Snoc列表,反向的缺点。我已经做了添加一个元素,我不知道如何连接两个列表。这就是现在的情况: module Tsil where data Tsil a = Lin | Snoc (Tsil a, a) deriving (Eq, Ord, Show, Read) empty :: Tsil a empty = Lin infixr 2

    14热度

    1回答

    {-# UNPACK #-}编译指示告诉编译器消除多余的构造函数。引述Haskell wiki: 例如,给定此: data T = T {-# UNPACK #-} !(Int,Float) GHC将代表类型T是这样的: data T = T Int Float 消除元组。这通常用于直接把装箱的INTS在构造函数中: data T = T {-# UNPACK #-} !Int 将被表

    16热度

    1回答

    通常,我需要将字段添加到只记忆一些冗余信息的ADT。但我还没有完全弄清楚如何很好地和有效地做到这一点。 显示问题的最好方法是举个例子。假设我们正在与非类型化lambda项工作: type VSym = String data Lambda = Var VSym | App Lambda Lambda | Abs VSym Lambda 而且时不时地,我们需要计算

    17热度

    1回答

    通过this question和this blog post的阅读让我思考更多关于类型代数,特别是如何滥用它。 基本上, 1),我们可以认为Either A B类型添加量:A+B 2),我们可以认为有序对(A,B)的乘法:A*B 3)我们可以认为的函数A -> B指数:B^A 这里有一个明显的模式:Multiplicat离子是重复加法,并且指数是重复乘法。这导致Knuth to define th

    0热度

    1回答

    找到最小的,我需要找到最便宜的本田思域在此表 Sell(DName, Make, ModelNum, Price) 还有其他的表出售,但我假设没有其他制造商已经命名了他们做公民。 所以我期待找到Make Civic的最低价格。但我究竟能找到最低的价格?我会知道是否有一个设定价格(SELECT the make WHEN price < "x amount"),但我怎么去找到表中最低的价格。