import Control.Applicative import Data.Tree import Data.Foldable (toList) import System.Environment type Node = Tree () make_tree depth | depth > 1 = Node () [ make_tree (depth-1) , make_tree (depth-1) ] | otherwise = Node () [] counter = length . toList . make_tree main = do depth <- depthArg <$> getArgs print $ counter depth where depthArg [] = 10 depthArg lst = read . head $ lst