Skip to content

Instantly share code, notes, and snippets.

@elrikdante
Created May 23, 2017 07:21
Show Gist options
  • Save elrikdante/48f9f13b6125c24c4bf539772a102d9f to your computer and use it in GitHub Desktop.
Save elrikdante/48f9f13b6125c24c4bf539772a102d9f to your computer and use it in GitHub Desktop.
GRE Vocabulary Prep
{-# LANGUAGE Arrows,OverloadedStrings,BangPatterns #-}
module Main where
import System.Random
import Control.Arrow
import Control.Monad
import Data.Monoid
import qualified Control.Category as Cat
import qualified Control.Foldl as Fold
import qualified Data.Text as Text
import qualified Data.Text.IO as Text
import qualified Turtle
import Turtle(s,d,(%))
import Control.Foldl (Fold,FoldM)
import Data.Text (Text)
numWords :: Int {- determined emperically -}
numWords = 235886
randomWord :: IO Text
randomWord = do
(idx,_) <- (pure (randomR (0,numWords))) <*> newStdGen
(Turtle.ExitSuccess, out) <- Turtle.shellStrict (cmd idx) Turtle.empty
return out
where cmd = Turtle.format ("tail -n" %d% " /usr/share/dict/words | head -1")
main = randomWord >>= Text.putStr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment