Interactive terminal prompt.
List of Prompt helpers to pimp the UIs of your haskell programs
fortytwo
Interactive terminal prompt
Installation
cabal install fortytwo
Demo
API
Prompts
Input
Ask a simple question requiring the user to type any string. It returns always a String
import FortyTwo (input)
main :: IO String
main = input "What's your name?"
inputWithDefault
will let you define a fallback answer if no answer will be provided
import FortyTwo (inputWithDefault)
main :: IO String
main = inputWithDefault "What's your name?" "Undefined"
Confirm
Confirm prompt returning a boolean either True
or False
. If no answer will be provided it will return False
import FortyTwo (confirm)
main :: IO Bool
main = confirm "Are you old enough to see this?"
confirmWithDefault
will let you define a fallback answer if no answer will be provided
import FortyTwo (confirmWithDefault)
main :: IO Bool
main = confirmWithDefault "Are you old enough to see this?" True
Password
Password prompt hiding the values typed by the user. It will always return a String
import FortyTwo (password)
main :: IO String
main = password "What's your secret password?"
Select
Select prompt letting users decide between one of many possible answers. It will always return a String
import FortyTwo (select)
main :: IO String
main = select
"What's your favourite color?"
["Red", "Yellow", "Blue"]
selectWithDefault
will let you define a fallback answer if no answer will be provided
import FortyTwo (selectWithDefault)
main :: IO String
main = selectWithDefault
"What's your favourite color?"
["Red", "Yellow", "Blue"]
"Red"
Multiselect
Multiselect prompt letting users decide between multiple possible choices. It will always return a collection [String]
import FortyTwo (multiselect)
main :: IO [String]
main = multiselect
"What are your favourite films?"
["Titanic", "Matrix", "The Gladiator"]
multiselectWithDefault
will let you define a fallback answer if no answer will be provided
import FortyTwo (multiselectWithDefault)
main :: IO [String]
main = multiselectWithDefault
"What are your favourite films?"
["Titanic", "Matrix", "The Gladiator"]
["The Gladiator"]
Inspiration
This script is heavily inspired by survey (golang)