Skip to content

Commit 3774144

Browse files
author
euonymos
committed
chore: check all FIXME items
1 parent d49b06e commit 3774144

File tree

11 files changed

+59
-55
lines changed

11 files changed

+59
-55
lines changed

cem-script.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ library
157157
Cardano.CEM.Compile
158158
Cardano.CEM.Documentation
159159
Cardano.CEM.DSL
160-
Cardano.CEM.DSLSmart
161160
Cardano.CEM.Indexing.Event
162161
Cardano.CEM.Indexing.Oura
163162
Cardano.CEM.Indexing.Tx
@@ -166,6 +165,7 @@ library
166165
Cardano.CEM.Monads.L1Commons
167166
Cardano.CEM.OffChain
168167
Cardano.CEM.OnChain
168+
Cardano.CEM.Smart
169169
Cardano.CEM.TH
170170

171171
build-depends:

lib/cardano-extras/Cardano/Extras.hs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{-# OPTIONS_GHC -Wno-orphans #-}
22

3-
{- | Various utils to cope with `cardano-api` types
4-
Mainly stolen from `hydra-cardano-api` and some from `atlas`
5-
-}
3+
-- | Various utils to cope with `cardano-api` types.
64
module Cardano.Extras where
75

86
import Prelude

lib/cardano-extras/Plutarch/Extras.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
module Plutarch.Extras where
44

5-
import Prelude
6-
75
import Plutarch
86
import Plutarch.Builtin
97
import Plutarch.LedgerApi
108
import Plutarch.LedgerApi.Value
119
import Plutarch.Maybe (pfromJust)
1210
import Plutarch.Monadic qualified as P
1311
import Plutarch.Prelude
12+
import Prelude
1413

1514
pMkAdaOnlyValue :: Term s (PInteger :--> PValue Unsorted NonZero)
1615
pMkAdaOnlyValue = phoistAcyclic $ plam $ \lovelaces ->

lib/cardano-extras/Plutus/Extras.hs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
module Plutus.Extras where
22

3-
import PlutusTx.Prelude
4-
53
import Cardano.Api (
64
Script (..),
75
SerialiseAsRawBytes (serialiseToRawBytes),
86
hashScript,
97
)
108
import Cardano.Api.Shelley (PlutusScript (..))
11-
import PlutusLedgerApi.Common (SerialisedScript)
12-
import PlutusLedgerApi.V2 (ScriptHash (..), UnsafeFromData (..))
13-
149
import Cardano.Extras
10+
import PlutusLedgerApi.Common (SerialisedScript)
1511
import PlutusLedgerApi.V1.Value (CurrencySymbol (..))
12+
import PlutusLedgerApi.V2 (ScriptHash (..), UnsafeFromData (..))
13+
import PlutusTx.Prelude
1614

1715
-- | Signature of an untyped validator script.
1816
type ValidatorType = BuiltinData -> BuiltinData -> BuiltinData -> ()

lib/data-spine/Data/Spine.hs

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,38 @@
33
{-# LANGUAGE DefaultSignatures #-}
44
{-# LANGUAGE PolyKinds #-}
55

6-
{- |
7-
Note about design decision on nested spines.
8-
`getSpine (Just Value) = JustSpine ValueSpine` - looks more usable,
9-
than `getSpine (Just Value) = JustSpine`.
10-
But it seem to break deriving for parametised types like `Maybe a`,
11-
and can be done with `fmap getSpine mValue`. Probably it actually
12-
works exaclty for functorial parameters.
6+
{- | Spine is datatype, which tags only constructors of ADT skipping their content.
7+
TH deriving utility generates Spines which are Enums but one could introduce
8+
more complex Spine datatypes manually.
9+
10+
Initially this module didn't depend on any cardano code, and this state of
11+
things can be restored if needed. For Plutus version we attach some additional
12+
information to spines.
13+
14+
A note on design decision on nested spines.
15+
16+
`getSpine (Just Value) = JustSpine ValueSpine`
17+
18+
seems to be more sensible than:
19+
20+
`getSpine (Just Value) = JustSpine`.
21+
22+
But it seem to break deriving for parametised types like `Maybe a`,
23+
and can be done with `fmap getSpine mValue`. Probably it actually
24+
works exaclty for functorial parameters.
1325
-}
14-
module Data.Spine where
26+
module Data.Spine (
27+
-- * Common spines
28+
HasSpine (..),
29+
deriveSpine,
30+
allSpines,
31+
32+
-- * Plutus Spines
33+
HasPlutusSpine (..),
34+
derivePlutusSpine,
35+
spineFieldsNum,
36+
fieldNum,
37+
) where
1538

1639
import Data.Data (Proxy)
1740
import Data.List (elemIndex)
@@ -25,11 +48,6 @@ import PlutusTx (FromData, ToData, UnsafeFromData, unstableMakeIsData)
2548
import Prelude
2649

2750
-- | Definitions
28-
29-
{- | Spine is datatype, which tags only constructors of ADT skipping their content.
30-
TH deriving utility generates Spines which are Enums but one could introduce
31-
more complex Spine datatypes manually.
32-
-}
3351
class
3452
( Ord (Spine sop)
3553
, Show (Spine sop)
@@ -41,7 +59,9 @@ class
4159
type Spine sop = spine | spine -> sop
4260
getSpine :: sop -> Spine sop
4361

44-
-- | Version of `HasSpine` knowing its Plutus Data encoding
62+
{- | Version of `HasSpine` that knows its Plutus Data encoding and keeps
63+
names of fields for every constructor.
64+
-}
4565
class
4666
( HasSpine sop
4767
, UnsafeFromData sop
@@ -59,7 +79,6 @@ spineFieldsNum :: forall sop. (HasPlutusSpine sop) => Spine sop -> Natural
5979
spineFieldsNum spine =
6080
toNat $ length $ (fieldsMap @sop) Map.! spine
6181

62-
-- FIXME: use spine do discriminate
6382
fieldNum ::
6483
forall sop label.
6584
(HasPlutusSpine sop, KnownSymbol label) =>
@@ -72,7 +91,7 @@ fieldNum proxyLabel =
7291
fieldName = symbolVal proxyLabel
7392
fieldIndex dict = toNat <$> elemIndex fieldName dict
7493

75-
allSpines :: forall sop. (HasPlutusSpine sop) => [Spine sop]
94+
allSpines :: forall sop. (HasSpine sop) => [Spine sop]
7695
allSpines = [Prelude.minBound .. Prelude.maxBound]
7796

7897
-- | Phantom type param is required for `HasSpine` injectivity
@@ -91,7 +110,6 @@ addSuffix :: Name -> String -> Name
91110
addSuffix (Name (OccName name) flavour) suffix =
92111
Name (OccName $ name <> suffix) flavour
93112

94-
-- FIXME: cleaner return type
95113
reifyDatatype :: Name -> Q (Name, [Name], [[Name]])
96114
reifyDatatype ty = do
97115
(TyConI tyCon) <- reify ty

src/Cardano/CEM.hs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ module Cardano.CEM (
22
module X,
33
) where
44

5-
-- TODO: review
6-
75
import Cardano.CEM.Address as X (
86
cemScriptAddress,
97
cemScriptPlutusAddress,
@@ -18,13 +16,16 @@ import Cardano.CEM.DSL as X (
1816
RecordSetter ((::=)),
1917
TxConstraint,
2018
)
21-
import Cardano.CEM.DSLSmart as X
2219
import Cardano.CEM.Monads as X
2320
import Cardano.CEM.Monads.CLB as X
2421
import Cardano.CEM.OffChain as X
2522
import Cardano.CEM.OnChain as X
23+
import Cardano.CEM.Smart as X
2624
import Cardano.CEM.TH as X (
2725
compileCEMOnchain,
2826
deriveCEMAssociatedTypes,
2927
)
30-
import Data.Spine as X (derivePlutusSpine)
28+
import Data.Spine as X (
29+
derivePlutusSpine,
30+
deriveSpine,
31+
)

src/Cardano/CEM/Monads/CLB.hs

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@
22

33
module Cardano.CEM.Monads.CLB where
44

5-
import Prelude
6-
7-
import Control.Concurrent.MVar (MVar, modifyMVar_, newMVar, readMVar)
8-
import Control.Monad.State (StateT (..), gets)
9-
import Data.Map qualified as Map
10-
import Data.Set qualified as Set
11-
12-
-- Cardano imports
135
import Cardano.Api hiding (queryUtxo)
146
import Cardano.Api.Query (fromLedgerUTxO)
15-
16-
-- Lib imports
7+
import Cardano.CEM.Monads
8+
import Cardano.CEM.Monads.L1Commons
9+
import Cardano.CEM.OffChain (fromPlutusAddressInMonad)
10+
import Cardano.Extras (Era)
1711
import Clb (
1812
ClbState (mockConfig),
1913
ClbT (..),
@@ -29,16 +23,13 @@ import Clb (
2923
)
3024
import Clb.MockConfig (defaultBabbage)
3125
import Clb.TimeSlot (posixTimeToUTCTime)
32-
33-
-- CEM imports
34-
35-
import Cardano.CEM.Monads
36-
import Cardano.CEM.Monads.L1Commons
37-
import Cardano.CEM.OffChain (fromPlutusAddressInMonad)
26+
import Control.Concurrent.MVar (MVar, modifyMVar_, newMVar, readMVar)
3827
import Control.Monad.Reader (MonadReader (..), ReaderT (..))
39-
40-
import Cardano.Extras (Era)
28+
import Control.Monad.State (StateT (..), gets)
4129
import Data.Either.Extra (mapRight)
30+
import Data.Map qualified as Map
31+
import Data.Set qualified as Set
32+
import Prelude
4233

4334
instance (MonadReader r m) => MonadReader r (ClbT m) where
4435
ask = lift ask
@@ -80,7 +71,7 @@ instance
8071

8172
instance (Monad m, MonadBlockchainParams (ClbT m)) => MonadQueryUtxo (ClbT m) where
8273
queryUtxo query = do
83-
utxos <- fromLedgerUTxO shelleyBasedEra <$> gets getUtxosAtState
74+
utxos <- gets (fromLedgerUTxO shelleyBasedEra . getUtxosAtState)
8475
predicate <- mkPredicate
8576
return $ UTxO $ Map.filterWithKey predicate $ unUTxO utxos
8677
where

src/Cardano/CEM/DSLSmart.hs renamed to src/Cardano/CEM/Smart.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{-# LANGUAGE AllowAmbiguousTypes #-}
22

3-
module Cardano.CEM.DSLSmart where
3+
-- | Smart constructors fir DSL/constraints
4+
module Cardano.CEM.Smart where
45

56
import Cardano.CEM.DSL
67
import Data.Map (Map)

test/CEM/Test/Auction.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import CEM.Test.TestNFT (testNftAssetClass)
88
import CEM.Test.Utils (
99
execClb,
1010
mintTestTokens,
11-
-- perTransitionStats,
1211
submitAndCheck,
1312
submitCheckReturn,
1413
)

test/CEM/Test/OuraFilters/Auction.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import CEM.Example.Compiled ()
88
import CEM.Test.Oura.Communication qualified as Oura
99
import CEM.Test.OuraFilters.Mock qualified as Mock
1010
import CEM.Test.Utils (SpotGarbage, withTimeout)
11-
import Cardano.CEM hiding (error) -- FIXME:
11+
import Cardano.CEM hiding (error)
1212
import Cardano.CEM.Indexing
1313
import Cardano.Ledger.BaseTypes qualified as Ledger
1414
import Control.Lens ((%~), (.~))

0 commit comments

Comments
 (0)