This commit is contained in:
2026-05-10 17:24:58 -06:00
parent 3ce87bbb3d
commit 42b94606ba

View File

@@ -3,6 +3,7 @@
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
module Gyehoek.Sexp module Gyehoek.Sexp
( let_ ( let_
, sexp
, nonempty , nonempty
, nonEmptyGrammar , nonEmptyGrammar
, encode , encode
@@ -11,7 +12,7 @@ module Gyehoek.Sexp
where where
import Data.Text (Text) import Data.Text (Text)
import Language.SexpGrammar as Sexp hiding (List, encode, decode) import Language.SexpGrammar as Sexp hiding (List, encode, decode, iso)
import Language.SexpGrammar qualified as Sexp import Language.SexpGrammar qualified as Sexp
import Language.SexpGrammar.Generic import Language.SexpGrammar.Generic
import Data.InvertibleGrammar.Base qualified as IGB import Data.InvertibleGrammar.Base qualified as IGB
@@ -20,11 +21,17 @@ import Data.InvertibleGrammar.Base ((:-)((:-)))
import Data.List.NonEmpty (NonEmpty ((:|))) import Data.List.NonEmpty (NonEmpty ((:|)))
import Data.List (List) import Data.List (List)
import Data.Text.Encoding import Data.Text.Encoding
import Data.Either (either)
import GHC.Generics (Generic) import GHC.Generics (Generic)
import Control.Lens import Control.Lens
encode :: SexpIso a => a -> Either _ Text sexp :: SexpIso a => Iso' a Text
sexp = iso
(either error id . encode)
(either error id . decode)
encode :: SexpIso a => a -> Either String Text
encode = (_Right %~ decodeUtf8 . view strict) . Sexp.encode encode = (_Right %~ decodeUtf8 . view strict) . Sexp.encode
decode :: SexpIso a => Text -> Either String a decode :: SexpIso a => Text -> Either String a