Щоденник мети

Мать, моя женщина, в F#, кроме передачи функции в функций и передачи операторов - можно создавать функцию внутри функцию и возвращать новую функцию для того что бы с помощью карирование использовать эту функцию в будущем.
Ну и для интереса велосипед в виде умножение или сказ о том, что говнокодить можно везде
let rec (*) (number:int) (mulnumber:int)= //
if abs mulnumber > abs number then (mulnumber * number)
else if mulnumber >1 then number- (-number * (mulnumber-1))
else if mulnumber<1 then -(number * -mulnumber)
else if mulnumber = 1 then number
else 0
~~~
Тоже самое можно переписать как -
let rec (*) (number:int) (mulnumber:int)= //
- match mulnumber with
- | 1 -> number
- | 0 -> 0
- | mulnumber when abs mulnumber > abs number -> mulnumber*number
- | mulnumber when mulnumber < 0 -> -(number * -mulnumber)
- | mulnumber -> number- (-number * (mulnumber-1))