fibonacciFy : String -> String -> String fibonacciFy origIndent input = input |> String.lines |> List.map (fibonacciFyLine origIndent) |> String.join "\n" fibonacciFyLine : String -> String -> String fibonacciFyLine origIndent input = let trimed = String.trimLeft input indentLevel = (String.length input - String.length trimed) // String.length origIndent in String.repeat (2*cumulativeFib indentLevel) " " ++ trimed cumulativeFib : Int -> Int cumulativeFib n = List.range 0 n |> List.map fibonacci |> List.sum fibonacci : Int -> Int fibonacci n = let fib a b n = if n <= 0 then a else fib b (a + b) (n - 1) in fib 0 1 n