lambda-buffers icon indicating copy to clipboard operation
lambda-buffers copied to clipboard

Discuss: PlutusData meaning for Prelude types

Open bladyjoker opened this issue 1 year ago • 1 comments

What is PlutusData (toData and fromData) meaning for all Prelude types?

https://github.com/mlabs-haskell/lambda-buffers/blob/26adebd13cb97900cec7fe66cb1dd11977ba77ed/libs/lbf-plutus/Plutus/V1.lbf#L15

-- Instances for Prelude types
-- TODO(bladyjoker): Add other Prelude types (Text, Bytes etc.)?
instance PlutusData Bool
instance PlutusData Integer
instance PlutusData (Maybe a) :- PlutusData a
instance PlutusData (List a) :- PlutusData a
instance PlutusData (Either a b) :- PlutusData a, PlutusData b

These are obvious, but we could theoretically define PlutusData for Prelude Char/Text/Bytes/Map/Set.

Gergely's Rust backend already implements some notion of PlutusData for these types.

Should we complete this?

bladyjoker avatar Jun 13 '24 16:06 bladyjoker

Options:

Remove Plutus Map and Bytes

Do we need them. For offchain backends like Rust, it doesn't really matter, so we could remove these and just define PlutusData semantics for Prelude Map and Bytes.

For onchain, Plutarch and PlutusTx, I think the same could apply. The codegen configs are separate and they can map Prelude types to equivalent Plutus types.

bladyjoker avatar Jun 13 '24 16:06 bladyjoker