<div dir="ltr">Sorry for the mix-up. I mean associativity, not fixity!<br></div><br><div class="gmail_quote"><div dir="ltr">2019년 1월 6일 (일) 오전 9:06, Dannyu NDos <<a href="mailto:ndospark320@gmail.com">ndospark320@gmail.com</a>>님이 작성:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">For the following code as an example:</span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font></div><div><div style="font-weight:normal;line-height:22px;white-space:pre-wrap"><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">    {-# LANGUAGE TypeOperators #-}</span></span></span></font></div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">    infixr 5 :.</span></span></span></font></div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">    data List a = Null | a :. List a deriving (Eq, Ord, Show, Read)</span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">The Show instance and the Read instance are inaware of the fixity of (:.):</span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">    *Main> 2 :. 3 :. Null<br>    2 :. (3 :. Null)<br>    *Main> read "2 :. 3 :. Null" :: List Int<br>    *** Exception: Prelude.read: no parse<br>    *Main> read "2 :. (3 :. Null)" :: List Int</span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">    2 :. (3 :. Null)<br></span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace">The derived instances should be:</span></span></span></font></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font></div><div><div style="font-weight:normal;line-height:22px;white-space:pre-wrap"><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    instance Show a => Show (List a) where</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">        showsPrec p Null = showParen (11 <= p) (showString "Null")</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">        showsPrec p (x :. xs) = showParen (5 <= p) (go p (x :. xs)) where</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>    go _ Null = showString "Null"</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">   <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>     go p (x :. xs) = showsPrec p x . showString " :. " . go p xs</span></font></span></span></div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace"><br></span></font></span></span><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>instance Read a => Read (List a) where</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace"> <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>   readPrec = parens $ do</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">  <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>      Ident "Null" <- lexP</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">   <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>     return Null</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>    +++ (do</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">      <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>      x <- readPrec</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">       <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>     Symbol ":." <- lexP</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">       <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>     xs <- readPrec</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">      <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>      return (x :. xs)</span></font></span></span></div><div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">     <span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace">    </span></font></span></span>   )</span></font></span></span></div></div><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><font size="2"><span style="font-family:monospace,monospace"></span></font></span></span></div><div><font size="2"><span style="color:rgb(0,0,0)"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace,monospace"><br></span></span></span></font></div></div></div></div></div></div>
</blockquote></div>