zoukankan      html  css  js  c++  java
  • 数学之路(2)四大神器haskell(28)

    24、Data.Set 

    Set介于列表和映射之间,所有的元素唯一。

    fromList构造Set

    Prelude Data.Set> let x=Data.Set.fromList [11,22,33,44,55]

    Prelude Data.Set> let y=Data.Set.fromList [91,32,33,44,55]

    Prelude Data.Set> 

    Intersection完成set的交

    Prelude Data.Set> intersection  x y

    fromList [33,44,55]

    Prelude Data.Set> 

    difference去除第一个set中的某些元素,这些元素是与第二个set的交。

    Prelude Data.Set> Data.Set.difference x y

    fromList [11,22]

    Prelude Data.Set>

    union完成2set的并

    Prelude Data.Set> Data.Set.union x y

    fromList [11,22,32,33,44,55,91]

    Prelude Data.Set> 

    nullsizememberemptysingletoninsertdeletemap相对应的操作类似。

    25、定义模块

    我们把以前的练习定义的部分函数创建一个自己的模块:

    我们定义2个模块:Mymodule.Test2Mymodule.Test1

    首先建立2个程序文件:test1.hstest2.hs

    Test1.hs内容为 :

    module Mymodule.Test1

    (mylength

    ,oddcount

    ,evencount

    ,mysum

    )where

    --------------

    mylength jh=sum[1|_<-jh]

    oddcount jh=sum[1|x<-jh,x `mod` 2/=0]

    evencount jh=sum[1|x<-jh,even x]

    -------------

    mysum :: (Integral a)=>a->a

    mysum 0=0

    mysum n=n + mysum (n-1) 

    Test2.hs内容为 :

    module Mymodule.Test2

    (myfst

    ,mycnt

    ,mylst

    ,mymin

    )where

    ------------------

    myfst ::(a,b,c)->a

    mycnt ::(a,b,c)->b

    mylst ::(a,b,c)->c

    myfst (a,_,_)=a

    mycnt (_,b,_)=b

    mylst (_,_,c)=c

    ----------------------

    mymin::(Ord a)=>[a]->a

    mymin []=error "empty list!"

    mymin [x]=x

    mymin (x:xs)

           |x<minval=x

       |otherwise=minval

           where minval=mymin xs 

    将这2个文件放在需要使用这2个模块的程序执行目录的子目录Mymodule下。然后编写一个程序加载这2个模块,并调用里面的函数

    import Mymodule.Test1

    import Mymodule.Test2

    test1_1 a=mylength a

    test1_2 a=evencount a

    test2_1 a=mycnt a

    test2_2 a=mymin a

    运行测试一下:

    *Main> :load "mytestm.hs"

    [1 of 3] Compiling Mymodule.Test2   ( Mymodule\Test2.hs, interpreted )

    [2 of 3] Compiling Mymodule.Test1   ( Mymodule\Test1.hs, interpreted )

    [3 of 3] Compiling Main             ( mytestm.hs, interpreted )

    Ok, modules loaded: Mymodule.Test1, Mymodule.Test2, Main.

    *Main> test1_1 [11,22,33]

    3

    *Main> test1_2 [11,22,33]

    1

    *Main> test2_2 [11,22,33]

    11

    *Main> test2_1 (11,22,33)

    22

    *Main> 

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

    http://blog.csdn.net/u010255642

  • 相关阅读:
    AUDIOqueue 为什么会播放一段时间就听不到声音
    逆序一位数数组求和
    求数组中两数之和等于target的两个数的下标
    iOS获取崩溃日志
    如何看iOS崩溃日志
    关于iOS刷新UI需要在主线程执行
    iOS内置麦克风选择方法
    贝叶斯深度学习-概述
    空间统计(Spatial Statistics)学习笔记(一)— 概述
    重采样技术—Bootstrap
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3098161.html
Copyright © 2011-2022 走看看