Currying makes positional only parameters look cooler and fancier. It's a trap. Labeled arguments is the way to go for 99% of all parameters. Accidental currying is horrible.
splitString :: { pattern :: String, string :: String } -> Array String
splitString { pattern, string } = ...
This function would use positional arguments: splitString :: Pattern -> String -> Array String
splitString pattern string = ...Number.parseInt('10', 0) Number.parseInt('10', 1) Number.parseInt('10', 2)
JavaScript lacks typing, and then they decided on a weird signature for the callback...
It's a very nasty issue to debug.
It would look like this
newtype Radix = Radix { radixToWord :: Word }
newtype Index = Index { indexToWord :: Word }
[0]: https://wiki.haskell.org/Newtype