Coursera Course: Programming Languages

来源:互联网 发布:mac桌面文件不能拖动 编辑:程序博客网 时间:2024/06/07 02:34

第一课作业

fun is_older (date1 : int*int*int, date2 : int*int*int) =    if #1 date1 <> #1 date2    then        #1 date1 < #1 date2    else        if #2 date1 <> #2 date2        then            #2 date1 < #2 date2        else            if #3 date1 <> #3 date2            then                #3 date1 < #3 date2            else                falsefun number_in_month (ld : (int*int*int) list, m : int) =    if null ld    then 0    else         let             val tl_ans = number_in_month(tl ld, m)        in            if #2 (hd ld) = m             then 1 + tl_ans            else tl_ans        endfun number_in_months (ld : (int*int*int) list, ms : int list) =    if null ms    then 0    else        number_in_month(ld, hd ms) + number_in_months(ld, tl ms)fun dates_in_month (ld : (int*int*int) list, m : int) =    if null ld    then []    else        let            val tl_ans = dates_in_month(tl ld, m)        in            if #2 (hd ld) = m            then (hd ld) :: tl_ans            else tl_ans        endfun dates_in_months (ld : (int*int*int) list, ms : int list) =    if null ms    then []    else        dates_in_month(ld, hd ms) @ dates_in_months(ld, tl ms)fun get_nth (slist : string list, n : int) =    if n = 1    then        hd slist    else        get_nth(tl slist, n-1)fun date_to_string (date : int*int*int) =    let         val months = ["January","February","March","April","May", "June","July","August","September","October","November","December"]        val year = Int.toString(#1 date)        val month = get_nth(months, #2 date)        val day = Int.toString(#3 date)    in        month ^ " " ^ day ^ ", " ^ year    endfun number_before_reaching_sum (sum : int, nums : int list) =    if sum <= 0    then        ~1    else        1 + number_before_reaching_sum(sum - (hd nums), tl nums)fun what_month (day : int) =    let        val days = [31,28,31,30,31,30,31,31,30,31,30,31]    in        number_before_reaching_sum(day, days) + 1    endfun month_range (day1 : int, day2 : int) =    if day1 > day2    then []    else        what_month(day1) :: month_range(day1+1, day2)fun oldest (dates : (int*int*int) list) =    if null dates    then NONE    else        let val tl_ans = oldest(tl dates)        in            if isSome tl_ans andalso is_older(valOf tl_ans, hd dates)            then tl_ans            else SOME (hd dates)        end  
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 幼儿下午放学与上班错开怎么办 宝宝早上醒的早怎么办 晚卜睡不着尿多怎么办 要求正常休息公司不准怎么办 我早起被室友说怎么办? 小孩晚上睡的晚怎么办 初中一年级学不扎实怎么办 一年级学生上课爱说话怎么办 孩子不按时完成作业怎么办 高三理科基础不好怎么办 字写快了就难看怎么办 高一文科280分怎么办 高三了学不进去怎么办 副职兼任法人不够条件怎么办 正职和上级不和副职怎么办 中层正职和上级不和副职怎么办 陆军军官年龄大了怎么办 ps选区选多了怎么办 香港货物被海关扣了怎么办 羽绒服棉填充物不均匀了怎么办 蛀牙到牙神经了怎么办 t恤袖子长了怎么办 t恤袖子短了怎么办 ofo突然要交押金余款怎么办 裙子的腰小了怎么办 白衬衣棉质变软怎么办? 车被自行车刮了怎么办 刮花别人的车门怎么办 破腹产九个月意外怀孕怎么办 破腹产一年半意外怀孕怎么办 37天流产了该怎么办 旧鞋穿着磨脚了怎么办 皮鞋磨脚怎么办小窍门 拉链从下面开了怎么办 高帮足球鞋松了怎么办 橡筋裤头太紧了怎么办 内增高鞋跟太高怎么办 电脑增高架高了怎么办 银行取钱走后回来说少了怎么办 运动t桖太大了怎么办 袖口松紧太紧了怎么办