FCLabels.agda 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. {-- FCLabels.agda - some bindings to FCLabels
  2. -- Copyright (C) 2018 caryoscelus
  3. --
  4. -- This program is free software: you can redistribute it and/or modify
  5. -- it under the terms of the GNU General Public License as published by
  6. -- the Free Software Foundation, either version 3 of the License, or
  7. -- (at your option) any later version.
  8. --
  9. -- This program is distributed in the hope that it will be useful,
  10. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. -- GNU General Public License for more details.
  13. --
  14. -- You should have received a copy of the GNU General Public License
  15. -- along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. --}
  17. module FCLabels where
  18. {-# FOREIGN GHC
  19. import Data.Label
  20. #-}
  21. postulate
  22. _፦_ : (F A : Set) → Set
  23. set : {A F : Set} (lens : F ፦ A) → A → F → F
  24. get : {A F : Set} (lens : F ፦ A) → F → A
  25. modify : {A F : Set} (lens : F ፦ A) → (A → A) → F → F
  26. {-# COMPILE GHC _፦_ = type (:->) #-}
  27. {-# COMPILE GHC set = \_ _ -> set #-}
  28. {-# COMPILE GHC get = \_ _ -> get #-}
  29. {-# COMPILE GHC modify = \_ _ -> modify #-}