[OCaml] High Intensity Training Online
1
(* Authored routines. HD1 supplies one, the Ideal Routine, which this module
2
reproduces exactly: its supersets as pre-exhaust pairs, its own "or" lists as
3
permitted substitutes, the 6-10 band on every exercise. This is doctrine
4
content. It stays apart from the plan types in [Prescription] that build
5
it. *)
6
7
open Prescription
8
open Exercise
9
10
let exercise key =
11
match Exercise.find key with
12
| Some exercise -> exercise
13
| None -> invalid_arg "Ideal Routine references an absent catalog key"
14
15
let dumbbell_flyes =
16
exercise { equipment = Dumbbell; movement = Fly; variation = Standard }
17
18
let cable_crossovers =
19
exercise { equipment = Cable; movement = Crossover; variation = Standard }
20
21
let pec_deck =
22
exercise { equipment = Machine; movement = Pec_deck; variation = Standard }
23
24
let incline_presses =
25
exercise { equipment = Unspecified; movement = Press; variation = Incline }
26
27
let laterals =
28
exercise
29
{ equipment = Unspecified; movement = Lateral_raise; variation = Standard }
30
31
let bent_over_laterals =
32
exercise
33
{ equipment = Dumbbell; movement = Lateral_raise; variation = Bent_over }
34
35
let reverse_pec_deck =
36
exercise { equipment = Machine; movement = Pec_deck; variation = Rear_delt }
37
38
let lying_french_presses =
39
exercise
40
{ equipment = Unspecified; movement = French_press; variation = Lying }
41
42
let pressdowns =
43
exercise { equipment = Cable; movement = Pressdown; variation = Standard }
44
45
let triceps_machine =
46
exercise { equipment = Machine; movement = Press; variation = Triceps }
47
48
let dips =
49
exercise { equipment = Bodyweight; movement = Dip; variation = Standard }
50
51
let pullovers =
52
exercise
53
{ equipment = Unspecified; movement = Pullover; variation = Standard }
54
55
let straight_arm_pulldowns =
56
exercise { equipment = Cable; movement = Pulldown; variation = Straight_arm }
57
58
let close_grip_pulldowns =
59
exercise
60
{ equipment = Cable; movement = Pulldown; variation = Close_grip_palms_up }
61
62
let bent_over_rows =
63
exercise { equipment = Barbell; movement = Row; variation = Bent_over }
64
65
let shrugs =
66
exercise { equipment = Unspecified; movement = Shrug; variation = Standard }
67
68
let hyperextensions =
69
exercise
70
{ equipment = Bodyweight; movement = Hyperextension; variation = Standard }
71
72
let deadlifts =
73
exercise { equipment = Barbell; movement = Deadlift; variation = Standard }
74
75
let curls =
76
exercise { equipment = Barbell; movement = Curl; variation = Standard }
77
78
let preacher_curls =
79
exercise { equipment = Barbell; movement = Curl; variation = Preacher }
80
81
let leg_extensions =
82
exercise
83
{ equipment = Machine; movement = Leg_extension; variation = Standard }
84
85
let leg_presses =
86
exercise { equipment = Machine; movement = Leg_press; variation = Standard }
87
88
let squats =
89
exercise { equipment = Barbell; movement = Squat; variation = Standard }
90
91
let leg_curls =
92
exercise { equipment = Machine; movement = Leg_curl; variation = Standard }
93
94
let calf_raises =
95
exercise
96
{ equipment = Unspecified; movement = Calf_raise; variation = Standard }
97
98
let sit_ups =
99
exercise { equipment = Bodyweight; movement = Sit_up; variation = Standard }
100
101
(* HD1's guideline window for every listed exercise. *)
102
let six_to_ten = Rep_range.make ~min:6 ~max:10
103
104
let prescribe ?(substitutes = []) delivery =
105
Stimulus.make ~delivery ~rep_range:six_to_ten ~allowed_substitutes:substitutes
106
107
let single ?substitutes exercise =
108
prescribe ?substitutes (Stimulus.Single exercise)
109
110
let pre_exhaust ?substitutes ~isolation ~compound () =
111
prescribe ?substitutes (Stimulus.Pre_exhaust { isolation; compound })
112
113
let day ~name stimuli = Workout.make ~name ~stimuli
114
115
let ideal_day_one =
116
day ~name:"Day 1"
117
[
118
pre_exhaust
119
~substitutes:[ cable_crossovers; pec_deck ]
120
~isolation:dumbbell_flyes ~compound:incline_presses ();
121
single laterals;
122
single ~substitutes:[ reverse_pec_deck ] bent_over_laterals;
123
pre_exhaust
124
~substitutes:[ pressdowns; triceps_machine ]
125
~isolation:lying_french_presses ~compound:dips ();
126
]
127
128
let ideal_day_two =
129
day ~name:"Day 2"
130
[
131
pre_exhaust ~substitutes:[ straight_arm_pulldowns ] ~isolation:pullovers
132
~compound:close_grip_pulldowns ();
133
single bent_over_rows;
134
single shrugs;
135
single ~substitutes:[ deadlifts ] hyperextensions;
136
single ~substitutes:[ preacher_curls ] curls;
137
]
138
139
let ideal_day_three =
140
day ~name:"Day 3"
141
[
142
pre_exhaust ~substitutes:[ squats ] ~isolation:leg_extensions
143
~compound:leg_presses ();
144
single leg_curls;
145
single calf_raises;
146
single sit_ups;
147
]
148
149
let ideal =
150
Routine.make ~name:"Ideal Routine"
151
~workouts:[ ideal_day_one; ideal_day_two; ideal_day_three ]
152