user1679: I'm a little confused about the following code（from EnglishAuction.hs）:
auctionInstance :: Scripts.ScriptInstance Auctioning
auctionInstance = Scripts.validator @Auctioning
    $$(PlutusTx.compile [|| mkAuctionValidator ||])
    $$(PlutusTx.compile [|| wrap ||])                                                                                                                         
  where
    wrap = Scripts.wrapValidator @AuctionDatum @AuctionAction

What does "@" means? and what does Scripts.validator do? Why did it use two $$ instead of one?

user128: This is part of Template Haskell. It is the way to have Haskell compiled at runtime basically.
This link may help https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/template-haskell.html
$$ is considered a typed expression splice.  It also talks about [|| ... ||] which is a typed expression quotation.

1679: <p>I'm a little confused about the following code（from EnglishAuction.hs）:</p>
<pre><code>auctionInstance :: Scripts.ScriptInstance Auctioning
auctionInstance = Scripts.validator @Auctioning
    $$(PlutusTx.compile [|| mkAuctionValidator ||])
    $$(PlutusTx.compile [|| wrap ||])                                                                                                                         
  where
    wrap = Scripts.wrapValidator @AuctionDatum @AuctionAction
</code></pre>
<p>What does &quot;@&quot; means? and what does Scripts.validator do? Why did it use two $$ instead of one?</p>
 128: <p>This is part of Template Haskell. It is the way to have Haskell compiled at runtime basically.</p>
<p>This link may help <a href="https://downloads.haskell.org/%7Eghc/7.8.4/docs/html/users_guide/template-haskell.html" rel="nofollow noreferrer">https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/template-haskell.html</a></p>
<p>$$ is considered a typed expression splice.  It also talks about [|| ... ||] which is a typed expression quotation.</p>
