module Plutarch.Extra.ByteString (pallBS, pisHexDigit) where import Plutarch.Prelude pallBS :: Term s ((PInteger :--> PBool) :--> PByteString :--> PBool) pallBS :: forall (s :: S). Term s ((PInteger :--> PBool) :--> (PByteString :--> PBool)) pallBS = forall (a :: PType) (s :: S). HasCallStack => ClosedTerm a -> Term s a phoistAcyclic forall a b. (a -> b) -> a -> b $ forall a (b :: PType) (s :: S) (c :: PType). (PLamN a b s, HasCallStack) => (Term s c -> a) -> Term s (c :--> b) plam forall a b. (a -> b) -> a -> b $ \Term s (PInteger :--> PBool) f Term s PByteString str -> forall (s :: S) (a :: PType) (b :: PType). Term s a -> (Term s a -> Term s b) -> Term s b plet (forall (s :: S). Term s (PByteString :--> PInteger) plengthBS forall (s :: S) (a :: PType) (b :: PType). HasCallStack => Term s (a :--> b) -> Term s a -> Term s b # Term s PByteString str) forall a b. (a -> b) -> a -> b $ \Term s PInteger ln -> let helper :: Term _ (PInteger :--> PBool) helper :: Term s (PInteger :--> PBool) helper = forall (s :: S) (a :: PType) (b :: PType). Term s (((a :--> b) :--> (a :--> b)) :--> (a :--> b)) pfix forall (s :: S) (a :: PType) (b :: PType). HasCallStack => Term s (a :--> b) -> Term s a -> Term s b #$ forall a (b :: PType) (s :: S) (c :: PType). (PLamN a b s, HasCallStack) => (Term s c -> a) -> Term s (c :--> b) plam forall a b. (a -> b) -> a -> b $ \Term s (PInteger :--> PBool) self Term s PInteger i -> forall (s :: S) (a :: PType). Term s PBool -> Term s a -> Term s a -> Term s a pif (Term s PInteger i forall (t :: PType) (s :: S). PPartialOrd t => Term s t -> Term s t -> Term s PBool #< Term s PInteger ln) ( forall (s :: S) (a :: PType). Term s PBool -> Term s a -> Term s a -> Term s a pif (Term s (PInteger :--> PBool) f forall (s :: S) (a :: PType) (b :: PType). HasCallStack => Term s (a :--> b) -> Term s a -> Term s b #$ forall (s :: S). Term s (PByteString :--> (PInteger :--> PInteger)) pindexBS forall (s :: S) (a :: PType) (b :: PType). HasCallStack => Term s (a :--> b) -> Term s a -> Term s b # Term s PByteString str forall (s :: S) (a :: PType) (b :: PType). HasCallStack => Term s (a :--> b) -> Term s a -> Term s b # Term s PInteger i) (Term s (PInteger :--> PBool) self forall (s :: S) (a :: PType) (b :: PType). HasCallStack => Term s (a :--> b) -> Term s a -> Term s b # (Term s PInteger i forall a. Num a => a -> a -> a + Term s PInteger 1)) (forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a pcon forall (s :: S). PBool s PFalse) ) (forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a pcon forall (s :: S). PBool s PTrue) in Term s (PInteger :--> PBool) helper forall (s :: S) (a :: PType) (b :: PType). HasCallStack => Term s (a :--> b) -> Term s a -> Term s b # Term s PInteger 0 pisHexDigit :: Term s (PInteger :--> PBool) pisHexDigit :: forall (s :: S). Term s (PInteger :--> PBool) pisHexDigit = forall (a :: PType) (s :: S). HasCallStack => ClosedTerm a -> Term s a phoistAcyclic forall a b. (a -> b) -> a -> b $ forall a (b :: PType) (s :: S) (c :: PType). (PLamN a b s, HasCallStack) => (Term s c -> a) -> Term s (c :--> b) plam forall a b. (a -> b) -> a -> b $ \Term s PInteger chr -> (Term s PInteger chr forall (t :: PType) (s :: S). PPartialOrd t => Term s t -> Term s t -> Term s PBool #<= Term s PInteger 57 forall (s :: S). Term s PBool -> Term s PBool -> Term s PBool #&& Term s PInteger 48 forall (t :: PType) (s :: S). PPartialOrd t => Term s t -> Term s t -> Term s PBool #<= Term s PInteger chr) #|| (chr #<= 70 #&& 65 #<= chr) #|| (chr #<= 102 #&& 97 #<= chr)