---input---
func map (func A -> B), list A -> list B.
func once (pred) -> .

---tokens---
'func'        Keyword.Declaration
' '           Text.Whitespace
'map'         Name.Function
' '           Text.Whitespace
'('           Keyword.Mode
'func'        Keyword.Declaration
' '           Text.Whitespace
'A'           Keyword.Type
' '           Text.Whitespace
'->'          Keyword.Mode
' '           Text.Whitespace
'B'           Keyword.Type
')'           Keyword.Mode
','           Keyword.Mode
' '           Text.Whitespace
'list'        Keyword.Type
' '           Text.Whitespace
'A'           Keyword.Type
' '           Text.Whitespace
'->'          Keyword.Mode
' '           Text.Whitespace
'list'        Keyword.Type
' '           Text.Whitespace
'B'           Keyword.Type
'.'           Text
'\n'          Text.Whitespace

'func'        Keyword.Declaration
' '           Text.Whitespace
'once'        Name.Function
' '           Text.Whitespace
'('           Keyword.Mode
'pred'        Keyword.Declaration
')'           Keyword.Mode
' '           Text.Whitespace
'->'          Keyword.Mode
' '           Text.Whitespace
'.'           Text
'\n'          Text.Whitespace
