相关疑难解决方法(0)

如何使非法价值无法代表?

功能编程中的一种设计方法是使非法国家无法代表.我总是看到这是通过类型的结构来完成的,但类型的价值呢?

如果我有一个名为Email的字符串怎么办?我只希望它保留一个有效的电子邮件地址(针对某些正则表达式进行检查)?如何以功能方式(不使用OOP)执行此操作?

f# haskell functional-programming

22
推荐指数
4
解决办法
2258
查看次数

使用Haskell的类型来替换断言语句或检查其他语言

对不起,如果问题非常简单,我对Haskell仍然很新.假设我有一个函数只能使用黄金比率中的两个数字(1.618),我如何定义myfun x y的类型以仅采用黄金比率数字.如果我在我的程序中调用没有黄金比例数字的myfun会出现什么情况(编译错误?)?如果没有黄金比例号码的呼叫是在运行时通过用户输入进行的,会发生什么?

testing haskell types type-systems

13
推荐指数
2
解决办法
1686
查看次数

非负整数

假设我有一个函数原型如下:

func :: [Int] -> [Int]
Run Code Online (Sandbox Code Playgroud)

如何仅将非负的整数列表强制实施为输入参数?我必须将[Int]的param类型改为什么..?在这个公平的时刻它与func [-1,-2]一起工作,我只希望它与[1,2]一起工作,即解释器喷出错误信息.

haskell types

8
推荐指数
2
解决办法
4094
查看次数

Haskell数据声明是否可以按类型值限制

在Haskell中,有没有办法通过其组件的值来限制数据类型?我已经起草了一个例子.假设你有一个跳棋游戏.检查器可以是黑色或白色类型.

data CheckerType = BlackChecker | WhiteChecker deriving (Eq)

data Checker = Checker CheckerType Int
Run Code Online (Sandbox Code Playgroud)

棋盘游戏的游戏板包含一组黑色棋子和白棋子.

data GameBoard = GameBoard ([Checker]) ([Checker])
Run Code Online (Sandbox Code Playgroud)

在之前的声明中,有没有办法在第一个[Checker]中强制执行CheckerType为CheckerType黑色,第二个是相反类型的Checkers?

haskell types functional-programming declaration

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

Haskell Peano数字

我正在尝试编写一个函数

toPeano :: Int -> Nat
toPeano n =
Run Code Online (Sandbox Code Playgroud)

将整数转换为其Peano数.

我有数据:

data Nat =
   Zero |
   Succ Nat
   deriving Show
Run Code Online (Sandbox Code Playgroud)

例如,

toPeano 0 = Zero
toPeano 1 = Succ Zero
toPeano 2 = Succ (Succ Zero)
Run Code Online (Sandbox Code Playgroud)

等等.

我不知道如何在给定整数的情况下打印出Peano数字.我从未使用过Peano号码,所以对此有任何帮助将不胜感激!

谢谢!

haskell integer peano-numbers

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

Haskell 类型级别约束

我很好奇是否可以在 Haskell 中编写这样的(伪代码):

data Clock = Clock {hour :: (0 <= Int <= 24),  minutes :: (0 <= Int <= 60)}
Run Code Online (Sandbox Code Playgroud)

使(在类型级别)无法创建如下内容:

let a = Clock 34 236
Run Code Online (Sandbox Code Playgroud)

或者应该使用一种时钟构建器来检查并创建有效的时钟时间?

haskell type-constraints

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