小编Sky*_*yfe的帖子

数据构造函数中的运算符(:>)是什么意思?

有谁知道以下代码中':>'构造函数的含义是什么:

data Rose a = a :> [Rose a]
    deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

constructor haskell

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

Prolog的附加有什么问题?

根据我大学的逻辑课程,我们可以预期Prolog定义的结果与以下查询不同:

append([], a, X)
Run Code Online (Sandbox Code Playgroud)

(统一为X=a).

但是我不明白他们的目标是什么?应该期望什么作为有效的响应,因为append应该统一X(在这个例子中)[]a?的串联?

我认为他们可能期待回归false[a]; 然而,我想应该是级联的结果a[],而不是[]a(因为[]是的尾部[a]).

append prolog

6
推荐指数
3
解决办法
881
查看次数

Haskell:如何使用这种数据结构

我必须使用包含以下数据结构的赋值的代码:

data Rose a =  a :> [Rose a]
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何使用这个数据结构,例如:我如何创建它的实例,我怎么可能循环一个?

如果有人能帮我解决这个问题.

haskell data-structures

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

数据树的Haskell可折叠实例

尝试使用以下代码为数据树创建可折叠实例:

data Rose a = a :> [Rose a]
    deriving (Eq, Show)

instance Foldable Rose where
    fold (a:>b) =  a <> (map fold b)
Run Code Online (Sandbox Code Playgroud)

但是这段代码不起作用,它产生的错误:

Could not deduce <m ~ [m]>
from the context <Monoid m>
  bount by the type signature for fold :: Monoid m => Rose m -> m
...
In the return type of a call of 'map'
...
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么/如何使它工作?

haskell instance

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

Haskell通过匹配值重新排序列表

我想知道是否有一种有效/简单的方法来通过匹配设置顺序的另一个列表的值来重新排序列表列表.更具体地说,如果我有以下列表:

[["a", "1", "2"], ["b", "2", "3"]]
Run Code Online (Sandbox Code Playgroud)

我想订购以下列表:

["b", "a"]
Run Code Online (Sandbox Code Playgroud)

产生新订单:

[["b", "2", "3"], ["a", "1", "2"]]
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

提前致谢!

最诚挚的问候,Skyfe.

haskell list

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

<>运算符是什么意思

运算符<>在以下代码中的含义是什么?

class Functor f => Foldable f where
    fold    :: Monoid m =>             f m -> m
    foldMap :: Monoid m => (a -> m) -> f a -> m

instance Foldable [] where
    fold = foldr (<>) mempty
Run Code Online (Sandbox Code Playgroud)

有人能告诉我吗?

haskell operators functor

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

haskell无法构造无限类型

我认为以下代码应该工作:

sum_up x = loop_it 0 x
    where loop_it sum i | i > 0     = loop_it sum+i i-1
                        | i == 0    = sum
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

<interactive>:3:15: error:
    • Occurs check: cannot construct the infinite type:
        t2 ~ (t0 -> t2) -> t2
      Expected type: t2 -> t2
        Actual type: t2 -> (t0 -> t2) -> t2
    • In an equation for ‘sum_up’:
          sum_up x
            = loop_it 0 x
            where
                loop_it sum i
                  | i > 0 = loop_it sum …
Run Code Online (Sandbox Code Playgroud)

haskell loops where

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

haskell添加项目列表不起作用

我是Haskell的新手,我正在尝试使用:运算符将字符串添加到字符串列表中,但不知怎的,它无法正常工作......此代码正在运行:

sl:(printH header):sl:(map printR t)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在最后添加字符串sl时,如下所示:

sl:(printH header):sl:(map printR t):sl
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误,这对我没有任何意义(sincwe其他连接确实顺利):

Couldn't match type '[Char]' with 'Char'
Expected type: [String] -> Char
  Actual type: [String] -> String
In the first argument of 'map', namely 'printR'
...
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?

haskell list

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