Created
May 2, 2022 17:29
-
-
Save SuperCipher/22b4f346c6f0968826da444e93a1b5a1 to your computer and use it in GitHub Desktop.
4 different way to update record in purescript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Main where | |
import Prelude | |
import Effect (Effect) | |
import Effect.Console (log) | |
type Person = Age (name :: String) | |
type Age a = | |
{ age :: Int | a } | |
update_person :: Person -> { name :: String, age :: Int} | |
update_person person = | |
-- {name : person.name, age : person.age + 1} | |
person { age = person.age + 1 } | |
update_person' :: Person -> Person | |
update_person' person = | |
-- {name : person.name, age : person.age + 1} | |
person { age = person.age + 1 } | |
update_person'' :: forall a. Age a -> Age a | |
update_person'' person = | |
-- {name : person.name, age : person.age + 1} | |
person { age = person.age + 1 } | |
f :: Person -> Int | |
f obj = obj.age + 5 | |
main :: Effect Unit | |
main = | |
let | |
pat = { name: "str", age: 1 } | |
in | |
do | |
log (show pat <> " π " <> show (update_person pat)) | |
log (show pat <> " π " <> show (update_person' { name: "str", age: 1 })) | |
log (show pat <> " π " <> show (update_person'' { name: "str", age: 1 })) | |
log (show pat <> " π " <> show (update_person'' pat)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment