I’ve been writing Haskell for over a decade, and finally figured out how to write a program that echoes:
-- echoes echoes (haskell)
-- Haskell language
{-# LANGUAGE BlockArguments #-} -- block arguments
module Module (Where) where
import Import.Qualified qualified as As hiding (Hiding)
newtype Newtype = Equals NewType
-- ^ newtype
data DataEquals = Data Data
data Data
-- main
main = equals do
do let let_ = Equals if if_ then Then else Else in in_
bind <- getLine -- get line
pure -- pure
bind >>= \lambda -> do
-- do print "print" -- TODO to do re: move - remove
bind_ bind -- echoes echoes
equals = id -- id
-- data
data Where -- Where data
data If -- If equals...
= Then -- Then or
| Else -- Else
-- let
let_ = -- equals unit
()
-- in
in_ = -- equals pure
pure () -- unit type
type NewType -- `Newtype` equals
= If
if_ = -- equals True
True
-- bind
bind_ = -- equals print
print