my $a = 1; # Haskell: a <- newIORef 1 -- a :: IORef Int
my $b := 1; # Haskell: let b = 1 -- b :: Int
my $c = $a; # Haskell: c <- newIORef =<< readIORef a -- c :: IORef Int
my $d := $a; # Haskell: let d = a -- d :: IORef Int
put "$a$b"; # Haskell: s <- (<>) <$> readIORef a <*> pure b ; putStrLn s
put "$c$d"; # Haskell: s <- (<>) <$> readIORef c <*> readIORef d ; putStrLn s