# 28. [Literate Haskell], 256 bytes


<!-- language-all: lang-hs -->

<pre><code>.&#9;|+xx&lt;&lt;&lt;"a"&lt;&lt;&lt;xx+|&#9;.
 &#9;&#9;
&gt;&#9;g x=elem '&lt;'x&amp;&amp;e%x==e
&gt;&#9;e=tail(show 0)&#9;
&gt;&#9;('&lt;':a)%('&gt;':b)=a%b
&gt;&#9;a%('&lt;':b)=('&lt;':a)%b
&gt;&#9;a%('&gt;':b)='&lt;':e
&gt;&#9;a%(x:b)=a%b{-&gt;Hi, Retina!Henry Jams?-}
&gt;&#9;a@(_:_)%_=a
&gt;&#9;a%b=e
 &#9;
a&#9;
b&#9;
C&#9;
d&#9;
e&#9;
f&#9;
g&#9;
h&#9;
i&#9;
j&#9;
k&#9;
l&#9;
m&#9;
n&#9;
o&#9;
ppppppppp&#9;
q&#9;3~
</code></pre>

[Try it online!][TIO-jf1h0pcm]

[Literate Haskell]: https://www.haskell.org/onlinereport/literate.html
[TIO-jf1h0pcm]: https://tio.run/##5ZDBToNAEIbP/zzFtgkFUiEm3giLJl4aj74AGXQKaxdaC4lrrL46LlSewjlMMt/8/2RmGu4PYm1izSBnHmQcU1y2zuV5vua1z85tL0hJAVSgVk6LlVaFeeg2Gwmc1uK56IGNjfrm@KFu40kZeUXGcRCFRZhVseag8pSDmft66S/0qpqgXIn7c30lxc7cqGcZTMernXTnT/XEbX@ffE/Ch6jMyjgoNc@2yq@jQAyqQI@gV5CA9qAa1IAM6A10AFlQC@pAR9BpCdA77n5G8pNaNp023fSTl2G@K63jf/@aXw "Literate Haskell – Try It Online"

[Test Driver]

[Test Driver]:https://tio.run/##5RjbVtvK9XnmK6YTjCXAYyQwFxuJQJJzwllp6EpoVrsI0LE9sgWypEgy2MRknaf2fMJ5aD@ir119ah77Fc2PuHtGNpZvB3LiPtUspJm998zs@96aKo@b/X6NJ8QmYRQ0It5iSSfBWNSaASn4hC4ZlACS1@thqFAjjKkwSeRyv9H2eOQm3QmKDUVxKTxvErOpMHHCa1eiPoErKVzYTZqBvzGB27rHTSC2FeKm6cahiOIREn50aUch3yioFJa5fthOWOIGxB7CR1vtKupIJK7PJ1AfjfU7KhkPWi0xhTMU7pJf87gWuWEyRWAqgusp@IaCA@NeaRzntsIgSkjcjSuOBYSlu0oYuX6iORrAWJzUXZ9Fgtc1XdfpSGvm1BFb6ogPbR4loJ@EO84UybYiARUmIg55bVq@nbvMEZOW@WimqlHWnjrfTEVs8vgK8MxrxmPY9OhG4DmzNWfu3GFsoxZ3fQvEFxGvJVrcDG5YQ8/sa6qNMT6wlrQBm6QYhElRua98rq6ysEsKhXbiwNNxPTFybbKXcQwdH/7aTe7H@kgEo0wodh1yCtIcUGJZ8D6k5KxCkqbwMVGENORxTLHwYjGEONz1KHbcGTKNBV7xZCwMgb2puHxIvF@x3xQsI7G5EIkVZ8ql0idx2qN8MkOih@jvxxlON76Z03T@Ns1mxI2JHyTE9eV6Uo/caxExip8Q0VHR/Pr4@YuL3x2cvLRosR1HRc@tFv2gLi5aQb3tiViSynlqlkGOHL7ZZZxNm2MqSFU2keB6w4DNZtRUWZIyA5xHeq@o0jcratqL5UQ9pI8N8/pDrjpv0XCY4Xnrf8DzsMrcDyQb2dLzEP@P2SA7zcizvbiwiopV1y@@STNuWgUHB6mKaRMSwJ5RpjymcDsLP5y924giw/vOt9siBbxRtXluoLUCP0gVnRbxYkrPREdkyvqM0Ina1e4g6mSBT58sqo7q/QzLPmrR/ThbE9YXlHh@uO84ZquEkKN8HWrktSBJQG4gWYtMlyKJg6guIols8StB3AS0qBTyzlKCXQ8SgpnKeV2UhVj6rGplSKFNCs6UXr5m7fWkahZTPWRHJbe/76zIrMicRXQ/yTK1qELxh50tAkSiVYUCNbBY4JOTo2P6uBRujnL4IC5la0jnEo5EKC2@D8n2lGMTaeTJhvOhzPi1m02CsrJuLS5Vjpri4o16TbTJ8zqRR6wbB2T5X0yqf8iXZvcDcxqCyY7A2FlQSBzXEpme5mT0X24Fza/tBc1sMzgZIuaisvKBFzbbtau5Mj1a8KjtD75vst9PMyvRHMLMLCvpwhrf18eHx6@@TdDBTr89/G4@Sdo@vzp4/b0l/Ivfvx25xejLMTOUNXj8k3Kekzx@@Tggq8zFROu0Cc05xh7/Opa5f87aLJPfHK79PkO91U5nb2@PcgrPTme1hxgmCMH3eYN0LOGJFsnv5TvLyyLXsSwBcGElsIH6YCfruqTUgKLM9ZyWt/Plqm7xXBWgPKfgMB/ih9CUSgJFCukMVn0s2C/dNZJ2eL95KfyoS37grXi/cCcJn2oX5Qs9d2FxtawK7BCEOcJVhJ8hXEdYIOwg3EC4ibCL8CXCVwh7CLcQ9hEOEA6HP4Q/oI1P/edrztrTNQMvOTYdjCk@7jOmM4aZftRimDJqsT7DX378mxB9tnH6JC@uhX@Gn5YdjPNsQ0hQ3sytW2d54pCgnfTZumHi0X0PTu95POHLmx7CiLrrgffgtoesrJB1ViI5Ykgzrut9Ju7e85jdvjU25K1Xqc94tVYXTqPpXl55LT8IP0CdbF/fdLq32CbUpvA8kk514HkYunrjy08/mXJw3E4ASjYwMFWwbysdSx76yvVFrOmVrvVO1JIgcm@F1k6cnZPgyE90raNXuN/VGpEIPY0WbLrW0YGpgr3@p4yB@swYMxg5Ip4LLed3kfBrTVJ@jumbd55XqbNmmft1EsEjaIHwbceB/jSQGxjLy1ps2TSzDRy3vByf7p5ZVp7m4VjD87zv//juJaXh55/HCD//899/Ziv/@jv@/PP5@hJQVmjFYPj9xHaVpQtrz66A94fplRvpFovFml1aXo7AlhHEhviwdFHps5Ojk1cvCETDE/gnL17BHPygzhOO3TJzXAhHs7RmrK3juMziBPZqEJozS6fn7/0zipMRcEwzEG4jzGFXjOCs4QVV7hHZSGP5KEt7QwCG7bjpkSV3OIhxjcPpcY37Dub1OoB21kgOuo0RaUqRROBoA5LNAUncrpIl05Az3sGXt6Q7XOWkq5RanIlVl62QwFbd8pA4@QVi4ZcxfJCBnxlgZ80wViilK4ah1X0ONhmziLzIpVSXdB5vVeucxGW6D9nMJ7E0OEt/YIPBCDaANeBu/DSz0RkA908LhrmpsZ7N9f0zvLkr/bK3n/7RVToY9SY5kPthIhMIAnUjqXT5J6cKRjBgcUqlIJIUxsM47LOtChW8YO@Dr@zbBS5oZQuyxZjV56WAscteFoeem2j0vU913Ta3Vg0dP/ZHe/JH8SYz@5Kj3Cow1KOC9oCl1ZzkaExsyEsbm6Wt7Z1dPDGce8SXH/@aycSQBf/zj7/04TBj9VnB7oEhESWkZxeerYKRVOWQbkwsMrzbJdASJwCWLxIDQpUOrdYU0FBpnsxEYHUdKFKQRaSPaar2JLwqEfACcBK88NstsovR1/xlmIfJSBkYfepLORCq5CX31KBSonwFQQnMI3yLcBfhDsI3CF8j3EZZTWZ3zVcqOEE4RjiSVUWWmZaqOleqArmqGjVUZRKqStVUxfJRsXy@Zm7b5@fnPcvr@j5eQf6n//ua/F8

**Satisfies**

2. The first character is a `.`.
3. It contains an `e`.
4. Its length is even.
5. Its length is a perfect square.
6. It contains an `a`.
7. It contains a `>` character.
8. Contains the exact string `->`.
9. Contains the exact string `Hi, Retina!`.
10. The sum of the first two Unicode code points is a multiple of 5.
11. The 10-th character is a `"`.
12. The last non-empty line does not have any duplicate characters.
13. The first line is a palindrome of length > 5.
14. The first line is exactly 21 characters long (not including newline).
15. It contains a `?`.
16. It contains a `|`.
17. Contains a `+`.
18. It is at least 28 lines long.
19. The following characters are used five times in total: `!"#$.[\]` and the codepoint of the second character is less than 60.
20. Contains `Henry Jams?` as a continuous substring.
21. The last character is `~`.
22. It contains a `C`
23. Each line contains a tab character.
24. The ninth line contains at least 22 characters, excluding the newline.
25. The tab character can't be the first character on a line
26. The third-to-last character is a tab.
27. There are at least 28 lines, and they are all distinct.
28. **There must be a `>` in the code and angle braces must be balanced**

<hr>

**For future answers:**

- The first line is a palindrome matching `.␣␣␣␣␣␣␣␣"␣"␣␣␣␣␣␣␣␣.` (you are free to fill in the ␣s).
- The second character is one of `',16;`, or a tab, or one of `\x04\x0e\x13\x18\x1d`.
- Its length is an even perfect square.
- There are at least 28 lines, and all lines are distinct.
- The ninth line must have at least 22 characters (excluding the newline).
- The last line does not have any duplicate characters.
- Contains the exact strings `->`, `Hi, Retina!`, and `Henry Jams?`.
- It contains `|`, `+` and `C`.
- Each line contains at least one tab character, but it can't be the first character on a line.
- `!".` are banned except where necessary:
  - Only `!` in `Hi, Retina!` and the two `.` and two `"` in the first line are allowed.
- `#$[\]` may not appear in the program.
- The program ends with: `tab`, *(whatever)*, `~`.
- **Angle braces must be balanced**