haskell(15)

本博客所有内容是原创,未经书面许可,严禁任何形式的转载。

http://blog.csdn.net/u010255642


12、守卫(guards)

模式匹配针对的是确定值,而守卫(guards)则测试值的特性是true还是false,守卫更适合需要对参数运用复杂的条件表达式情况。

numtest ::(Num a,Ord a)=>a->String
numtest testnum
    |testnum <=100 ="<=100"
|testnum <=1000 ="<=1000"
|testnum <=10000 ="<=10000"
|otherwise =">10000"


加载后运行。

*Main> numtest 10

"<=100"

*Main> numtest 1000

"<=1000"

*Main> numtest 10000

"<=10000"

*Main> numtest (-1000)

"<=100"

*Main> numtest 100000

">10000"

再来看一个解一元二次方程的例子,只有一个未知数且未知数最高次数为2的整式方程叫做一元二次方程,其一般形式为(a≠0)。 

求根的公式是


有两个不相等的实数根,等于0时,有2个相等的实数根,否则是下面两个复数根:


完成这个任务,我们需要装载复数模块,装载模块的语法为: import 模块名 复数模块的名字是Data.Complex 

我们在ghci中可以直接使用:m +/- 模块名的方式加载或释放模块。比如:

Prelude>  :m +Data.Complex

Prelude Data.Complex>  :m -Data.Complex

Prelude>

也可同时装载和释放多个模块

Prelude>  :m +Data.Complex Data.List

Prelude Data.Complex Data.List>  :m -Data.Complex Data.List

Prelude>

所有装载模块的函数可以在全局命名空间使用。

复数的表示方式是:实部:+虚部,比如5+12.8i可在haskell中表示为:

Prelude>  :m +Data.Complex

Prelude Data.Complex> 5 :+12.8

5.0 :+ 12.8

Prelude Data.Complex>

关于数字的类型类,haskell主要有:

Integral:包括IntInteger类型

RealFloat:包括FloatDouble 类型

RealFrac:包括RealFloat类型类,Ratio类型是该类型类的成员

Floating:包括 RealFloat类型类,Complex类型是该类型类的成员

Real:包括IntegralRealFrac类型类

Fractional:包括RealFracFloating类型类

Num:包括RealFractional类型类


你可能感兴趣的:(数学,haskell)