mitchell vitez blog music art games dark mode

A Haskell Program that Echoes

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