user5610: Doing week 04, watching "PPP 030403 - The EmulatorTrace Monad"
In the repl, having already imported as follows

>import Data.Char
>import Text.Read
>import Plutus.Trace.Emulator
>import Data.Default

If I enter ":t TraceConfig" I see

Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default> :t TraceConfig
TraceConfig
  :: (Wallet.Emulator.MultiAgent.EmulatorEvent' -> Maybe String)
     -> GHC.IO.Handle.Types.Handle -> TraceConfig
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default>

Attempting to explore that, I enter (and get error) as follows:

Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default> :t Wallet.Emulator.MultiAgent.EmulatorEvent'
 
:1:1: error:
    Not in scope:
      data constructor ‘Wallet.Emulator.MultiAgent.EmulatorEvent'’
    No module named ‘Wallet.Emulator.MultiAgent’ is imported.
 
 
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default> :i Wallet.Emulator.MultiAgent.EmulatorEvent'
type Wallet.Emulator.MultiAgent.EmulatorEvent' :: *
data Wallet.Emulator.MultiAgent.EmulatorEvent'
  = Wallet.Emulator.MultiAgent.ChainEvent Wallet.Emulator.Chain.ChainEvent
  | Wallet.Emulator.MultiAgent.ClientEvent Wallet.Emulator.Wallet.Wallet
                                          Wallet.Emulator.NodeClient.NodeClientEvent
  | Wallet.Emulator.MultiAgent.WalletEvent Wallet.Emulator.Wallet.Wallet
                                         Wallet.Emulator.Wallet.WalletEvent
  | Wallet.Emulator.MultiAgent.ChainIndexEvent Wallet.Emulator.Wallet.Wallet
                                          plutus-chain-index-core-0.1.0.0:Plutus.ChainIndex.ChainIndexLog.ChainIndexLog
  | Wallet.Emulator.MultiAgent.SchedulerEvent Plutus.Trace.Scheduler.SchedulerLog
  | Wallet.Emulator.MultiAgent.InstanceEvent Plutus.Trace.Emulator.Types.ContractInstanceLog
  | Wallet.Emulator.MultiAgent.UserThreadEvent Plutus.Trace.Emulator.Types.UserThreadMsg
      -- Defined in ‘Wallet.Emulator.MultiAgent’
instance Eq Wallet.Emulator.MultiAgent.EmulatorEvent'
  -- Defined in ‘Wallet.Emulator.MultiAgent’
instance Show Wallet.Emulator.MultiAgent.EmulatorEvent'
  -- Defined in ‘Wallet.Emulator.MultiAgent’
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default>

My question is, why does ":i" (requesting info about) work, but ":t" (requesting merely the type, which is actually included in the info) does not?
 
Tracking these multiple nestings of data structures is straining my brain.

user6113: Take into account that :t is for getting the type of a function, and EmulatorEvent' is not a function but a type. So, because it's a type you can use :i EmulatorEvent' but not :t EmulatorEvent'.
You can use :t with the constructors (they are functions) of EmulatorEvent', say :t ChainEvent.


5610: <p>Doing week 04, watching &quot;PPP 030403 - The EmulatorTrace Monad&quot;</p>
<p>In the repl, having already imported as follows</p>
<blockquote><pre>
>import Data.Char
>import Text.Read
>import Plutus.Trace.Emulator
>import Data.Default
</pre></blockquote>
<p>If I enter &quot;:t TraceConfig&quot; I see</p>
<blockquote><pre>
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default> :t TraceConfig
TraceConfig
  :: (Wallet.Emulator.MultiAgent.EmulatorEvent' -> Maybe String)
     -> GHC.IO.Handle.Types.Handle -> TraceConfig
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default>
</pre></blockquote>
Attempting to explore that, I enter (and get error) as follows:
<blockquote><pre>
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default> :t Wallet.Emulator.MultiAgent.EmulatorEvent'
 
:1:1: error:
&nbsp;&nbsp;&nbsp;&nbsp;Not in scope:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data constructor ‘Wallet.Emulator.MultiAgent.EmulatorEvent'’
&nbsp;&nbsp;&nbsp;&nbsp;No module named ‘Wallet.Emulator.MultiAgent’ is imported.
&nbsp;
&nbsp;
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default> :i Wallet.Emulator.MultiAgent.EmulatorEvent'
type Wallet.Emulator.MultiAgent.EmulatorEvent' :: *
data Wallet.Emulator.MultiAgent.EmulatorEvent'
&nbsp;&nbsp;= Wallet.Emulator.MultiAgent.ChainEvent Wallet.Emulator.Chain.ChainEvent
&nbsp;&nbsp;| Wallet.Emulator.MultiAgent.ClientEvent Wallet.Emulator.Wallet.Wallet
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wallet.Emulator.NodeClient.NodeClientEvent
&nbsp;&nbsp;| Wallet.Emulator.MultiAgent.WalletEvent Wallet.Emulator.Wallet.Wallet
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wallet.Emulator.Wallet.WalletEvent
&nbsp;&nbsp;| Wallet.Emulator.MultiAgent.ChainIndexEvent Wallet.Emulator.Wallet.Wallet
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plutus-chain-index-core-0.1.0.0:Plutus.ChainIndex.ChainIndexLog.ChainIndexLog
&nbsp;&nbsp;| Wallet.Emulator.MultiAgent.SchedulerEvent Plutus.Trace.Scheduler.SchedulerLog
&nbsp;&nbsp;| Wallet.Emulator.MultiAgent.InstanceEvent Plutus.Trace.Emulator.Types.ContractInstanceLog
&nbsp;&nbsp;| Wallet.Emulator.MultiAgent.UserThreadEvent Plutus.Trace.Emulator.Types.UserThreadMsg
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Defined in ‘Wallet.Emulator.MultiAgent’
instance Eq Wallet.Emulator.MultiAgent.EmulatorEvent'
&nbsp;&nbsp;-- Defined in ‘Wallet.Emulator.MultiAgent’
instance Show Wallet.Emulator.MultiAgent.EmulatorEvent'
&nbsp;&nbsp;-- Defined in ‘Wallet.Emulator.MultiAgent’
Prelude Data.Char Text.Read Plutus.Trace.Emulator Data.Default>
</pre></blockquote>
My question is, why does ":i" (requesting info about) work, but ":t" (requesting merely the type, which is actually included in the info) does not?
 
Tracking these multiple nestings of data structures is straining my brain.
 6113: <p>Take into account that <strong>:t</strong> is for getting the type of a function, and <strong>EmulatorEvent'</strong> is not a function but a type. So, because it's a type you can use <code>:i EmulatorEvent'</code> but not <code>:t EmulatorEvent'</code>.</p>
<p>You can use <strong>:t</strong> with the constructors (they are functions) of <strong>EmulatorEvent'</strong>, say <code>:t ChainEvent</code>.</p>
<p><a href="https://i.stack.imgur.com/AWcL7.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/AWcL7.png" alt="enter image description here" /></a></p>
