zoukankan      html  css  js  c++  java
  • 3天学习haskellhaskell第一天

    一 表达式和基本类型

    这个类似于命令式语言

    二函数

    函数是函数式编程的一等公民。

    这部分最重要的是递归函数。

    1基本递归

    例如,求阶乘

    代码:fact x=if x==0 then 1 else fact(x-1)*x

    2 模式匹配(实现递归)

    fact 0=1

    fact x=x*fact(x-1)

    3 哨兵表达式(为了改变模式匹配的顺序)

    fact x

      |x>1 =x*fact(x-1)

      |otherwise =1

    三 元组和列表

    元组,例如(x,y,z)

    列表 例如[int,int,int] [1..4] [10,9.5..4]

    列表的操作有:head,tail,zip(合并) ,take (取前几项)

    列表的生成:

    1递归 h:t=[1,2,3]

    2范围与组合 [1..4] [10,9.5..4]  take 5[0,2..]

    3列表推导 let crew=["kirk","pp","james"]

    [(a,b)|a<-crew,b<-crew,a|=b]


    主要参考网站为:维基教科书 http://zh.wikibooks.org/wiki/Haskell

                                 haskell中文社区

    本文内容总结来源于《七周七语言》。

    附课后题答案:

    --4
    func2 []=[]
    func2 [h]=[h]
    func2 (h:t)=(func2 t)++[h]

    --5
    color=["blue","black","white","yellow","red"]
    func5=[(a,b)|a<-color,b<-color,a<b]

    --6
    list6=[1..12]
    func6=[(a,b,a*b)|a<-list6,b<-list6,a<b]


    --7
    --a,b..e represent 5 states
    list7=["red","blue","green"]
    dif7 a b =if a==b then 0 else 1
    find7=[(a,b,c,d,e)|a<-list7,b<-list7,c<-list7,d<-list7,e<-list7,dif7 a b==1,dif7 b d==1,dif7 a d==1,dif7 a b==1,dif7 a c==1,dif7 a e==1,dif7 c e==1,dif7 c d==1]

  • 相关阅读:
    Markdown语法
    Hello World
    sql笔试题-1
    解决高版本vm打开虚拟机报错
    zookeeper启动闪退
    java找出1~1000中素数的三种方式
    Java中更精确的计时
    vue系列之调试工具(vue-devtools)
    vue系列之npm命令错误
    vue系列之安装基础环境
  • 原文地址:https://www.cnblogs.com/catkins/p/5270686.html
Copyright © 2011-2022 走看看