View raw

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