<p><code>@String</code> is from <code>TypeApplications</code>. <code>logInfo</code> has type <code>logInfo :: forall a effs. Member (LogMsg a) effs =&gt; a -&gt; Eff effs ()</code>, so <code>logInfo @String</code> fixes <code>a</code> to be <code>String</code>. (That this is needed here is because of another extension <code>OverloadedStrings</code>, so <code>&quot;made a gift&quot;</code> is not necessarily of type <code>String</code>)</p>
<p><code>.\/</code> is not from an extension, but <a href="https://hackage.haskell.org/package/row-types-1.0.1.2/docs/Data-Row.html#t:.-92--47-" rel="nofollow noreferrer">an operator defined by the <code>row-types</code> library</a>.</p>

CC BY-SA 4.0
2022-01-26T14:49:08.627Z
2022-01-26T14:49:08.627Z
Sjoerd Visscher
<p>I was wondering about syntax I am not used to in the off-chain code.</p>
<p>What does <code>@</code> mean in the following context?
<code>logInfo @String $ printf &quot;made a gift&quot;</code></p>
<p>What does <code>.\/</code> mean in the following context?
<code>type GiftSchema = Endpoint &quot;give&quot; Integer .\/ Endpoint &quot;grab&quot; ()</code></p>
<p>I guess that it has to do to the multiple GHC extensions invoked in Plutus code but I do not have the time to understand each and everyone of them.</p>

<plutus-pioneer-program><haskell>
What do unusual symbols "@" and ".\/" in off-chain code mean?
# What do unusual symbols "@" and ".\/" in off-chain code mean?

(Asked by: username_0 on 2022-01-26)

I was wondering about syntax I am not used to in the off-chain code.

What does `@` mean in the following context?
`logInfo @String $ printf "made a gift"`

What does `.\/` mean in the following context?
`type GiftSchema = Endpoint "give" Integer .\/ Endpoint "grab" ()`

I guess that it has to do to the multiple GHC extensions invoked in Plutus code but I do not have the time to understand each and everyone of them.

**Tags:** plutus-pioneer-program, haskell

---

## 1 answers

### Answer by username_1 on 2022-01-26. Score: 4 | Accepted answer

`@String` is from `TypeApplications`. `logInfo` has type `logInfo :: forall a effs. Member (LogMsg a) effs => a -> Eff effs ()`, so `logInfo @String` fixes `a` to be `String`. (That this is needed here is because of another extension `OverloadedStrings`, so `"made a gift"` is not necessarily of type `String`)

`.\/` is not from an extension, but [an operator defined by the `row-types` library](https://hackage.haskell.org/package/row-types-1.0.1.2/docs/Data-Row.html#t:.-92--47-).


---

