小编arr*_*ryn的帖子

平方矩阵的嵌套数据类型

我试图了解此数据类型(方)如何表示平方矩阵。

type Square = Square' Nil
data Square' t a = Zero (t (t a) ) | Succ (Square' (Cons t) a)
data Nil a = Nil
data Cons t a = Cons a (t a)
Run Code Online (Sandbox Code Playgroud)

所以。这是t什么 我想这是上面声明的类型之一。我决定从最简单的开始

Zero (Nil (Nil Int))
Run Code Online (Sandbox Code Playgroud)

如果我将整数4作为值,这是矩阵(4)吗?

假设它是某种东西。现在,这是什么:

Succ ( Zero (Cons t) a) 
Run Code Online (Sandbox Code Playgroud)

如果我是正确的t,那么这也许必须代表一些2×2矩阵,但是它的值是多少?

Succ (Zero (Cons Nil) a) 
Run Code Online (Sandbox Code Playgroud)

感谢您在我对它是方矩阵的理解方面的帮助。

haskell types nested

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

Make Haskell Imperative

Note: this is an exercise, and I'm trying to understand how things work.

I am trying to make it possible to do something like this in Haskell:

f :: Integer -> Integer
f n = def $ do
  i      <- var n
  while i (>0) $ do
    i      -= lit 1
  return i
-- for now, my program returns n 
Run Code Online (Sandbox Code Playgroud)

Below is my program. At this point, I cannot understand why it doesn't work, but for some reason, the variables …

haskell imperative state-monad

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

契约“ true”,使得“ assert true x == x”成立

是否可以写一份合同来检查陈述是否正确?例如,我想定义一个合同

true :: Contract a
Run Code Online (Sandbox Code Playgroud)

这样对于所有值x,方程

assert true x == x
Run Code Online (Sandbox Code Playgroud)

持有。

我已经尝试过这样的事情:

true :: Contract a
true = Pred (\a -> True) 
Run Code Online (Sandbox Code Playgroud)

但是在运行assert true x == x编译器时,这x是未定义的。运行时 assert true 5==6的结果是 False,我希望有一个 Contract violation error。我应该如何更改这份 true合同?感谢您的帮助。

这里

data Contract :: * -> * where
  Pred :: (a -> Bool) -> Contract a
  Fun  :: Contract a -> Contract b -> Contract (a -> b)
Run Code Online (Sandbox Code Playgroud)

如果违反合同,则声明将导致运行时失败,否则将返回原始结果:

assert :: Contract a -> a -> …
Run Code Online (Sandbox Code Playgroud)

haskell contract

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

完全按照 Haskell 中的格式读取字符串

我的程序是这样的:

func = do
      text <- getLine
      return text
Run Code Online (Sandbox Code Playgroud)

如果我读 line \123\456,结果自然是\\123\\456. 我怎样才能得到 \123\456结果?

io haskell io-monad

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

标签 统计

haskell ×4

contract ×1

imperative ×1

io ×1

io-monad ×1

nested ×1

state-monad ×1

types ×1