Here's a quickly thrown-together version of "Fun with logical expressions", written in Haskell: {-# LANGUAGE LambdaCase #-} module Main (main) where import Control.Applicative (Applicative (..), (<$>)) import Control.Arrow (first) import Data.Ix (inRange) import Control.Monad (guard, mplus, msum) import Data.Maybe (fromMaybe,...