gpt4 book ai didi

functional-programming - SML 和函数式编码风格

转载 作者:行者123 更新时间:2023-12-04 13:06:06 24 4
gpt4 key购买 nike

我开始通过 Programming languages 学习标准机器学习类(class)。

在第一个作业中,我尝试写一个函数is_older这需要两个日期并计算为 truefalse .它评估为 true如果第一个参数是第二个参数之前的日期(如果两个日期相同,则结果为 false .)。

所以我写了以下代码:

fun is_older(first: int * int * int, second: int * int * int) =
if(#1 first = #1 second andalso #2 first = #2 second andalso #3 first = #3 second) then false
else if (#1 first < #1 second) then true
else if (#1 first = #1 second andalso #2 first < #2 second) then true
else if (#1 first = #1 second andalso #2 first = #2 second andalso #3 first < #3 second) then true
else false

代码工作正常,但看起来很难看。

如何以函数式风格重写此代码?

最佳答案

两个建议:

  • 使用模式匹配来分解元组。
  • andalso 时使用 bool 运算符( orelseif/else 等)构造返回 bool 值。

  • 一个更易读的版本:
    (* Compare two dates in the form of (year, month, day) *)
    fun is_older((y1, m1, d1), (y2, m2, d2)) =
    y1 < y2 orelse (y1 = y2 andalso m1 < m2)
    orelse (y1 = y2 andalso m1 = m2 andalso d1 < d2)

    关于functional-programming - SML 和函数式编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14374408/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com