joneshf / purescript-option

MIT License
37 stars 15 forks source link

Documentation for alter function #50

Open ntwilson opened 3 years ago

ntwilson commented 3 years ago

Currently the alter function says:

Manipulates the values of an option. If the field exists in the option, the given function is applied to the value. If the field does not exist in the option, there is no change to the option.

I don't believe this is accurate. From my testing:

someOption :: Option ( foo :: Boolean, bar :: Int )
someOption = insert (Proxy :: _ "bar") 31 empty

anotherOption :: Option.Option ( foo :: Boolean, bar :: Int )
anotherOption = Option.alter { foo: (\(_ :: Maybe Boolean) -> Just false), bar: (\(_ :: Maybe Int) -> Just 41) } someOption

> anotherOption 
(Option.fromRecord { bar: 41, foo: false })

So it seems alter is able to adjust fields that don't exist in the option. I think the existing documentation reflects the modify' function behavior instead.

ntwilson commented 3 years ago

Would you accept a PR if I took a shot at reworking the alter docs?

joneshf commented 2 years ago

Sorry about the very delayed response. I think what you're saying is correct. Lemme take a minute to get up to speed first on how things work here again (haven't looked at this package in over a year).