<p>It means <a href="https://gitlab.haskell.org/ghc/ghc/-/wikis/type-application" rel="noreferrer">type application</a>.</p>
<p>In this case, the function is polymorphic with the following type:</p>
<pre><code>logInfo :: forall a effs. Member (LogMsg a) effs =&gt; a -&gt; Eff effs ()
</code></pre>
<p>by using <a href="https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_applications.html" rel="noreferrer">TypeApplications</a> extension, you can use <code>@SomeType</code> hint for the compiler, so the <code>logInfo</code> call is not ambiguous.</p>
<p><code>logInfo @String &quot;Hello world&quot;</code> means apply type <code>String</code> to functions type variable <code>a</code> (the order depends on the order of type variables in explicit <code>forall</code> section - <code>forall a effs</code> - sometimes you may want to add multiple hints e.g. <code>convert @String @Text someArg otherArg</code>).</p>
<p>Ambiguity here stems from multiple string types in Haskell so you need to tell the compiler which type you are using (<code>String</code>, <code>Text</code> or<code>ByteString</code>).</p>

CC BY-SA 4.0
2021-06-28T09:37:00.100Z
2021-06-28T09:37:00.100Z
sorki
<p>like this:</p>
<pre><code>auctionInstance = Scripts.validator @Auctioning
</code></pre>
<p>and Hello-world app from <a href="https://playground.plutus.iohkdev.io/tutorial/tutorials/plutus-playground.html#running-the-hello-world-app" rel="noreferrer">https://playground.plutus.iohkdev.io/tutorial/tutorials/plutus-playground.html#running-the-hello-world-app</a></p>
<pre><code>hello = logInfo @String &quot;Hello, world&quot;
</code></pre>

<plutus><plutus-pioneer-program><haskell><plutus-playground><plutustx>
What does @ prefix means?
# What does @ prefix means?

(Asked by: username_0 on 2021-06-28)

like this:
auctionInstance = Scripts.validator @Auctioning

and Hello-world app from https://playground.plutus.iohkdev.io/tutorial/tutorials/plutus-playground.html#running-the-hello-world-app
hello = logInfo @String "Hello, world"

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

---

## 1 answers

### Answer by username_1 on 2021-06-28. Score: 11 | Accepted answer

It means type application.
In this case, the function is polymorphic with the following type:
logInfo :: forall a effs. Member (LogMsg a) effs => a -> Eff effs ()

by using TypeApplications extension, you can use @SomeType hint for the compiler, so the logInfo call is not ambiguous.
logInfo @String "Hello world" means apply type String to functions type variable a (the order depends on the order of type variables in explicit forall section - forall a effs - sometimes you may want to add multiple hints e.g. convert @String @Text someArg otherArg).
Ambiguity here stems from multiple string types in Haskell so you need to tell the compiler which type you are using (String, Text orByteString).


---

