3 ms·
Write the full transform in Haskell?
by orf 2y ago
Write the full transform in Haskell?
- itishappy 2y ago{-# LANGUAGE OverloadedStrings #-} import Prelude hiding (putStrLn) import Data.Text (Text, replace) import Data.Text.IO (putStrLn) transform :: Text -> Text transform = replace "k" "sk" . replace "ke" "-ki" main :: IO () main = putStrLn $ transform "Haskell"
- fuzztester 2y agoLooks good to me, even as a Haskell ignoramus. I had tried it long back, but found it tough at the time. What is the reason for hiding the putStrLn of Prelude and importing that of Data.Text.IO?
- itishappy 2y agoPrelude takes a `String`, Data.Text.IO works with `Text`. Strings are linked lists of of chars, Text is a more traditional data structure. I tend to write small scripts and use Strings more, but Text is much more efficient for big blocks of text (unsurprisingly). The main reason I used it here was because I couldn't find a `replace` function for `String`, lol.
- fuzztester 2y agoThanks.
- sshine 2y agoSince the original sed command took "Haskell" as standard input, why not: {-# LANGUAGE OverloadedStrings #-} import qualified Data.Text as T import qualified Data.Text.IO as T main :: IO () main = T.interact (T.replace "k" "sk" . T.replace "ke" "-ki")
- itishappy 2y agoDidn't think to, but that looks very slick!