标签: functional-programming

根据Haskell中的布尔条件执行多个语句

我是Haskell的新手,如果几个布尔值为true,我将尝试执行多个语句。我使用了警卫队尝试了它,但它只执行了第一条正确的语句,然后停止了。我希望它执行所有正确的示例,例如f 5执行gx,然后还执行h x。我尝试使用if语句,但不能。

f x

  | x < 10 = g x

  | x < 15 = h x

  | otherwise = m x
Run Code Online (Sandbox Code Playgroud)

这只是一个简化,实际上我有一个不同的程序。情况不同,我只是想像其他编程语言一样具有多个if语句。因此,在此示例中,如果x <10,则执行某项操作;如果x <15,则也执行此操作。

haskell functional-programming guard-statement

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

如何从类型中获得价值

我有这种类型

type Card = (CardValue,Suite)
Run Code Online (Sandbox Code Playgroud)

我想写一个函数来显示基于Card.Suite值的颜色

colour :: Card -> Colour
colour card = if card.Suite == Spades then Red else Black
Run Code Online (Sandbox Code Playgroud)

这段代码仅说明了我想要实现的目标。我不知道如何从中真正获得套间价值Card(CardValue,Suite)

haskell functional-programming

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

创建列表理解时出现Haskell错误

我正在按照本指南创建列表推导。

data Value = Two|Three|Four|Five|Six|Seven|Eight|Nine|Ten|J|Q|K|A
          deriving (Eq, Ord, Enum)

data Suite = Hearts | Spades | Diamonds | Clubs
         deriving (Eq, Ord, Enum)

type Card  = (Value, Suite)

pack :: [Card]
pack = [(Value,Suite) | Value <- [Two .. A], Suite <- [Hearts .. Clubs]]
Run Code Online (Sandbox Code Playgroud)

当我创建pack函数时,它总是抛出

error: Data constructor not in scope: Suite :: Suite

haskell functional-programming

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

使用Parser是否有意义?

我有以下内容,想转换成数据结构。

文本是:

pcp-action:MESSAGE\npcp-channel:apc\:///\npcp-body-type:text\nPUBLIC:THISPK\nTOPIC:SEND\n\nHello Foo 
Run Code Online (Sandbox Code Playgroud)

我想知道,使用解析器是否有意义。老实说,我看不到Parser在这种情况下使用的意义,因为结构不是BNF像这样,JSON也不是可递归枚举的。

什么时候将文本Parser转换为数据结构有意义?

更新资料

我忘了提及上面的文字是基于以下描述,即在这里https://blogs.sap.com/2015/07/27/specification-of-the-push-channel-protocol-pcp/编写。

看起来,它是基于语法的。

parsing haskell functional-programming

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

在不使用变量的情况下尝试实现功能方式时,简单的命

我有树状的结构

class T {
  properties:P
  children:Seq[T]
}
Run Code Online (Sandbox Code Playgroud)

我希望将它转换为另一个树状结构,其中一些转换应用于属性,并且具有父节点的字段:

class TT {
  properties:PP
  parent:TT
  children:Seq[TT]
}
Run Code Online (Sandbox Code Playgroud)

在功能风格中找不到这样做的方法.你能帮我吗?

特别是@ om-nom-nom难以想象应该做的工作的java代码:

public class Omnomnom {
    static class P {
        String value;
    }

    static class PP {
        String value;
    }

    static class T {
        P properties;
        List<T> children;
    }

    static class TT {
        PP properties;
        TT parent;
        List<TT> children;
    }

    static PP transform_P_into_PP(P properties) {
        PP result = new PP();
        result.value = properties.value + "pff";
        return result;
    }

    public static TT transform_T_into_TT(T node, TT …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

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

获取Int并返回列表的函数

我在Haskell中进行了练习,我需要创建各种类型.第一种类型称为有限,它定义如下:

type Finite a = [a]
Run Code Online (Sandbox Code Playgroud)

然后我需要返回一个像这样定义的单例

singleF :: a -> Finite a
Run Code Online (Sandbox Code Playgroud)

所以我这样实现它:

single n = [n]
Run Code Online (Sandbox Code Playgroud)

然后我创建另一种类型

type Enumeration a = Int -> Finite a
Run Code Online (Sandbox Code Playgroud)

然后我需要重新实现单例函数

singleE :: a -> Enumeration a
Run Code Online (Sandbox Code Playgroud)

在我的理解中,类型Enumeration是从Int到类型列表的函数的同义词a,但我无法理解我是如何实现它的.

从锻炼(以前的类型"有限"也被称为"桶"): An enumeration is an infinite sequence of finite buckets, indexed by natural numbers.

而函数是:I suggest for simplicity that you put the sole item in bucket 0,所以我认为int是枚举中桶的索引

haskell functional-programming list

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

在阻塞中的Haskell缩进

我正在实现Hutton 编写的Haskell编程中的算术表达式树示例,我得到一个语法错误:

解析错误(可能是错误的缩进或括号不匹配)

firstgrm = do t <- secgrm
             ( do { symbol "##";
               o <- firstgrm;
           return (O (t ## o));}
        +++ return t )                         -- parse error here
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

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

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

如何在Haskell中的嵌套数据类型中进行更改

我懂了:

type ID = Int

data Bank = Bank [(ID, Account)] deriving Show

data Account = Account
  { balance :: Int
  , owner :: Client
  } deriving Show

data Client = Client
  { name :: String
  , surname :: String
  , address :: String
  } deriving Show
Run Code Online (Sandbox Code Playgroud)

我的任务是,编写一个函数credit :: Int -> ID -> Bank -> Bank ,将指定金额的Money添加到指定金额的帐户.我不知道我怎么能这样做,因为这些是数据类型..

haskell functional-programming

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

在Haskell中,如何创建具有多种类型的列表?

我有一个任务来生成一个列表,其中也可以包含字符串和整数.如何在Haskell中解决这个问题?

haskell functional-programming

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