在 100 行 Haskell 中规划每周的锻炼计划

主要观点:作者近期开始户外体重训练并计划下月开始跑步,今晚编写了一个每周训练计划的 Haskell 程序。
关键信息

  • 每周需在一个轴上进行一次短跑和一次长跑,另一个轴上进行两次拉日、两次推日和两次腿日训练。
  • 使用logict包来处理逻辑问题,通过chooseexactly等函数组合逻辑语句。
  • weeklySchedule函数通过do记号结合各种条件和逻辑组合来生成满足约束的训练计划。
    重要细节
  • workout包含推日、拉日、腿日和无训练选项,running包含长跑、短跑和无跑步选项,weekdays为一周的工作日。
  • weeklySchedule函数中,通过forM遍历每个工作日,为每个工作日选择workoutrunning中的元素,并满足一系列条件,如跑步日不能是腿日、短间隔跑在户外拉/推训练后等。
  • 还使用了exactly函数确保某个元素出现的次数,onDay函数确定元素在特定工作日的情况,spacedOut函数确保训练之间至少间隔特定天数,daysBetween函数确保两个元素之间至少间隔特定天数等。
  • 程序入口点main打印出满足约束的训练计划,共有三种不同的训练计划。
阅读 29
0 条评论