h$ w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                              !!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""##########################################$%%%%%%&'()****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,-----................////0000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1                      2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 5 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7                         8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9                                                                                                                                   : : : : : : : : : : : : : : : : : : : : : : : : : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; < < < < < < < < < < < < < < < = = = = = = = = = = > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ? ? ? ? ? ? @ 2 @ @ @ @ @ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222AAAAAAAAAAABBBBBBCCCCCCDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKLMNNNNNMNLMMNNNLOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW,,,,,,,,,,,,,,,,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333\\\\]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_______________```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                                      bbbbbbbbbbbbbbbbbbbbbbbbbbbccccNNNNNNNNNNNNNddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeee e e e e e e e e e e e e e e e e e e f f f f f f f f f f f f f f f f f f f f f f f g g g g g g g g g g g g g g g g g g g g g g g g ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!("("("("("("("("("("("("("("h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"h"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"i"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"j"k"k"k"l"l"l"l"l"l"l"l#l#l#l#l#l#l#l#l#l#l#l#l#l#l#l#l#l#m#m#m#m#m#m#m#n#n#n#n#N#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#n#N#n#n#n#n#n#n#n#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o$o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%p%p%p%p%p%p%p%p%p%p%p%p%p%p%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&r&r&r&r&r&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&s&t&t&t&t&t&t&t&t&t&t&t&t&t&t&t&t&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&u&v&v&v&v&v&v&v&v&v&v&v&v&v&v&v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'v'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w)w)w)w)w)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+y+y+z+z+z+z+z+z+z+z+z+z+z+z+z+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{+{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,{,|,|,|,|,|,|,|,|,|,|,|,|,|,|,},},},},},},~,~,~,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------------------------------------------------M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M--------------------------------................................................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8888888888888888888888888888888888888888888888888888888888888888888888888888888899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999N9N9N9N9N9N9N9M9M9M9M9M9M9M9M9L9L9L9M9M9M9L9M9M9L9L9L9L9L9L9L9L9L9L9L9L9L:L:L:L:L:L:L:L:L:N:L:L:L:L:L:L:L:L:L:L:L:L:L:L:N:N:N:N:N:O:O:D:L:N:N:N:L:N:N:D:D:L:L:N:N:N:N:N:N:N:N:N:N:N:N:N:M:M:N:N:M:L::::L:L:L:L:L:L:L:L:L:L:L:L:L:L:L:L:L:L:L:L:L: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=========================================N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N=N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@r@r@r@r@r@r@r@r@r@r@r@r@r@r@r@r@r@r@r@r@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@MAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBB@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@FQFQFQFQFQFQFQFQFQFQFQFQFQFQFQFQFQFQFQFQFQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQG?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ|J|J|J|J|J|J|J|J|J|J|J|J|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM~M~M~M~M~M~M~M~M~M~M~M~M~M~M~M~M~M~M~MMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y\y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^________________________________________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€ÀĀŀƀǀȀɀʀˀ̀̀΀πЀрҀӀԀՀր׀؀ـڀۀ܀݀ހ߀ÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂ƒÃăŃƃǃȃɃʃ˃̃̓΃σЃу҃ӃԃՃփ׃؃كڃۃ܃݃ރ߃„ÄĄńƄDŽȄɄʄ˄̄̈́΄τЄф҄ӄԄՄքׄ؄لڄۄ܄݄ބ߄…ÅąŅƅDžȅɅʅ˅̅ͅ΅υЅх҅ӅԅՅօׅ؅مڅۅ܅݅ޅ߅†ÆĆņƆdžȆɆʆˆ̆͆ΆφІц҆ӆԆՆֆ׆؆نچۆ܆݆ކ߆‡ÇćŇƇLJȇɇʇˇ͇̇·χЇч҇ӇԇՇևׇ؇هڇۇ܇݇އ߇ˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ߈‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщ҉ӉԉՉ։׉؉ىډۉ܉݉މ߉ŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊ}}}}}}}}}}}}}}}}}}}}}}‹ËċŋƋNjȋɋʋˋ̋͋΋ϋЋыҋӋԋՋ֋׋؋ًڋۋ܋݋ދߋŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތߌÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍ''''''''''''''''''''''''''''''''''''''''ŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎ  Safe-Inferredughc-lib-parserExpand occurrences of the $topdir interpolation in a string.ghc-lib-parser expandPathVar var value str!replaces occurrences of variable $var with value in str.ghc-lib-parser&Calculate the location of the base dir  Safe-Inferred8ghc-lib-parser/Return the size of the closures header in words Safe-Inferred+ Safe-Inferred8=ghc-lib-parserThis is a somewhat faithful representation of an info table. See  https://gitlab.haskell.org/ghc/ghc/blob/master/includes/rts/storage/InfoTables.h* for more details on this data structure.   Safe-Inferredghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.ghc-lib-parser%Size in bytes of a standard InfoTable Safe-Inferred ghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.None #$5678}<ghc-lib-parserThis is the representation of a Haskell value on the heap. It reflects https://gitlab.haskell.org/ghc/ghc/blob/master/includes/rts/storage/Closures.hThe data type is parametrized by the type to store references in. Usually this is a  with the type synonym .All Heap objects have the same basic layout. A header containing a pointer to the info table and a payload with various fields. The info field below always refers to the info table pointed to by the header. The remaining fields are the payload.See  https://gitlab.haskell.org/ghc/ghc/wikis/commentary/rts/storage/heap-objects for more information.ghc-lib-parserA data constructorghc-lib-parser A functionghc-lib-parser8A thunk, an expression not obviously in head normal formghc-lib-parser3A thunk which performs a simple selection operationghc-lib-parser#An unsaturated function applicationghc-lib-parserA function applicationghc-lib-parserA suspended thunk evaluationghc-lib-parserA pointer to another closure, introduced when a thunk is updated to point at its valueghc-lib-parserA byte-code object (BCO) which can be interpreted by GHC's byte-code interpreter (e.g. as used by GHCi)ghc-lib-parser*A thunk under evaluation by another threadghc-lib-parserA  ByteArray#ghc-lib-parserA MutableByteArray# ghc-lib-parserA SmallMutableArray#ghc-lib-parserAn MVar#7, with a queue of thread state objects blocking on themghc-lib-parserAn IOPort#7, with a queue of thread state objects blocking on themghc-lib-parserA MutVar#ghc-lib-parserAn STM blocking queue.ghc-lib-parser Primitive Intghc-lib-parserPrimitive Wordghc-lib-parserPrimitive Int64ghc-lib-parserPrimitive Word64ghc-lib-parserPrimitive Addrghc-lib-parserPrimitive Floatghc-lib-parserPrimitive Doubleghc-lib-parserAnother kind of closureghc-lib-parserPointer argumentsghc-lib-parserNon-pointer argumentsghc-lib-parser Package nameghc-lib-parser Module nameghc-lib-parserConstructor nameghc-lib-parser,Pointer to the object being selected fromghc-lib-parser Arity of the partial applicationghc-lib-parserSize of the payload in wordsghc-lib-parser Pointer to a ghc-lib-parser(Sequence of already applied argumentsghc-lib-parserTarget closureghc-lib-parser+A pointer to an ArrWords of instructionsghc-lib-parser'A pointer to an ArrWords of literalsghc-lib-parser0A pointer to an ArrWords of byte code objectsghc-lib-parserThe size of this BCO in wordsghc-lib-parserAn StgLargeBitmap describing the pointerhood of its args/free varsghc-lib-parserSize of array in bytesghc-lib-parser Array payloadghc-lib-parserNumber of pointersghc-lib-parser ?? Closures.h vs ClosureMacros.hghc-lib-parser!Array payload Card table ignoredghc-lib-parserPointer to head of queueghc-lib-parserPointer to tail of queueghc-lib-parserPointer to closureghc-lib-parserPointer to contentsghc-lib-parser?? Here so it looks like an INDghc-lib-parserThe blackhole closureghc-lib-parserThe owning thread state objectghc-lib-parser??ghc-lib-parserAn arbitrary Haskell value in a safe Box. The point is that even unevaluated thunks can safely be moved around inside the Box, and when required, e.g. in getBoxedClosureData>, the function knows how far it has to evaluate the argument.ghc-lib-parserThis takes an arbitrary value and puts it into a box. Note that calls like asBox (head list)-will put the thunk "head list" into the box, not the element at the head of the list. For that, use careful case expressions: case list of x:_ -> asBox xghc-lib-parserBoxes can be compared, but this is not pure, as different heap objects can, after garbage collection, become the same object.ghc-lib-parserFor generic code, this function returns all referenced closures. ghc-lib-parserGet the size of the top-level closure in words. Includes header and payload. Does not follow pointers.None(c) 2012 Joachim BreitnerBSD3+Joachim Breitner None./>ghc-lib-parserLike , but taking a , so it is easier to work with. Safe-Inferred8ghc-lib-parser'Foreign formats supported by GHC via THghc-lib-parserCghc-lib-parserC++ghc-lib-parser Objective Cghc-lib-parser Objective C++ghc-lib-parserAssembly language (.s)ghc-lib-parser Object (.o) Safe-Inferred(c) The GHC Teamghc-devs@haskell.orgportableSafe8ghc-lib-parser%The language extensions known to GHC.Note that there is an orphan Binary) instance for this type supplied by the GHC.LanguageExtensions module provided by ghc-boot. We can't provide here as this would require adding transitive dependencies to the template-haskell3 package, which must have a minimal dependency set. Safe-Inferred(c) The GHC Teamghc-devs@haskell.orgportable Safe-Inferredghc-lib-parserIs this character acceptable in a symbol (after the first char)? See alexGetByte in GHC.Parser.Lexer Safe-Inferred*ghc-lib-parser'x86 BMI (bit manipulation) instructionsghc-lib-parserx86 SSE instructionsghc-lib-parserTest if the given Integer is representable with a platform Intghc-lib-parser?Test if the given Integer is representable with a platform Wordghc-lib-parserFor some architectures the C calling convention is that any integer shorter than 64 bits is replaced by its 64 bits representation using sign or zero extension.WVUWVU Safe-Inferred  %&'() *+,-  ./012356$#"78]_`^9:! ;GJ<=>?@AHIBOMNCDEFKLdefghijklmnortuv{|}~ %&'() *+,-  ./012356$#"78]_`^9:! ;GJ<=>?@AHIBOMNCDEFKLdefghijklmnortuv{|}~ Safe-InferredĶghc-lib-parserBackendghc-lib-parserNative code generator backendghc-lib-parser LLVM backendghc-lib-parser Via-C backendghc-lib-parser Interpreterghc-lib-parser.Default backend to use for the given platform.ghc-lib-parser7Is the platform supported by the Native Code Generator? Safe-Inferredjghc-lib-parser Stream m a b is a computation in some Monad m/ that delivers a sequence of elements of type a followed by a result of type b.!More concretely, a value of type  Stream m a b can be run using  runStream in the Monad m, and it delivers eitherthe final result: Left b, or Right (a,str), where a( is the next element in the stream, and str4 is a computation to get the rest of the stream.4Stream is itself a Monad, and provides an operation  that produces a new element of the stream. This makes it convenient to turn existing monadic computations into streams.The idea is that Stream is useful for making a monadic computation that produces values from time to time. This can be used for knitting together two complex monadic operations, so that the producer does not have to produce all its values before the consumer starts consuming them. We make the producer into a Stream, and the consumer pulls on the stream each time it wants a new value.ghc-lib-parserTurn a Stream into an ordinary list, by demanding all the elements.ghc-lib-parserTurn a Stream into an ordinary list, by demanding all the elements.ghc-lib-parserTurn a list into a #, by yielding each element in turn.ghc-lib-parser&Apply a function to each element of a , lazilyghc-lib-parser/Apply a monadic operation to each element of a , lazilyghc-lib-parseranalog of the list-based  on Streams. This is a simple way to map over a Stream while carrying some state around.   Safe-Inferred None! Safe-InferredJ"None 567̒::# Safe-Inferred'(./25ҥ ghc-lib-parser2A sequence of nodes. May be any of four shapes (OO, OC, CO, CC). Open at the entry means single entry, mutatis mutandis for exit. A closedclosed block is a basic/ block and can't be extended further. Clients should avoid manipulating blocks and should stick to either nodes or graphs.ghc-lib-parser!Maybe type indexed by open/closedghc-lib-parser6Either type indexed by closed/open using type familiesghc-lib-parserUsed at the type level to indicate "open" vs "closed" structure.ghc-lib-parserAn "open" structure with a unique, unnamed control-flow edge flowing in or out. "Fallthrough" and concatenation are permitted at an open point.ghc-lib-parserA "closed" structure which supports control transfer only through the use of named labels---no "fallthrough" is permitted. The number of control-flow edges is unconstrained.ghc-lib-parserSplit a closed block into its entry node, open middle block, and exit node.ghc-lib-parser#map a function over the nodes of a ghc-lib-parser A strict ghc-lib-parsermap over a block, with different functions to apply to first nodes, middle nodes and last nodes respectively. The map is strict.))% Safe-Inferred'(ghc-lib-parserRepresents a serialized value of a particular type. Attempts can be made to deserialize it at certain typesghc-lib-parserPut a Typeable value that we are able to actually turn into bytes into a & value ready for deserialization laterghc-lib-parserIf the  value contains something of the given type, then use the specified deserializer to return Just that. Otherwise return Nothing.ghc-lib-parserUse a > instance to implement a serialization scheme dual to that of ghc-lib-parserUse a  instance to implement a deserialization scheme dual to that of &Noneghc-lib-parserDoes the controlling terminal support ANSI color sequences? This memoized to avoid thread-safety issues in ncurses (see #17922).+6(c) The University of Glasgow 2009, Duncan Coutts 2014ghc-devs@haskell.orgportableNone#$'(/2567>*-ghc-lib-parser holds a value of type t but only in  mode. So it is like A but with a type argument for the mode to enforce that the mode is used consistently.ghc-lib-parserMode to open a package db in.ghc-lib-parser"Represents a lock of a package db.ghc-lib-parserghc-boot4's instantiated unit id, serialized to the database.ghc-lib-parserInstantiated unitghc-lib-parserUninstantiated unitghc-lib-parserghc-boot's Module, serialized to the database.ghc-lib-parserInformation about an unit (a unit is an installed module library).This is a subset of Cabal's InstalledPackageInfo0, with just the bits that GHC is interested in.Some types are left as parameters to be instantiated differently in ghc-pkg and in ghc itself.ghc-lib-parserUnique unit identifier that is used during compilation (e.g. to generate symbols).ghc-lib-parserIdentifier of an indefinite unit (i.e. with module holes) that this unit is an instance of.ghc-lib-parserHow this unit instantiates some of its module holes. Map hole module names to actual moduleghc-lib-parserSource package identifier.Cabal instantiates this with Distribution.Types.PackageId.PackageId type which only contains the source package name and version. Notice that it doesn't contain the Hackage revision, nor any kind of hash.ghc-lib-parserSource package nameghc-lib-parserSource package versionghc-lib-parserName of the component.Cabal supports more than one components (libraries, executables, testsuites) in the same package. Each component has a name except the default one (that can only be a library component) for which we use Nothing.GHC only deals with "library" components as they are the only kind of components that can be registered in a database and used by other modules.ghc-lib-parserABI hash used to avoid mixing up units compiled with different dependencies, compiler, options, etc.ghc-lib-parser,Identifiers of the units this one depends onghc-lib-parserLike , but each dependency is annotated with the ABI hash we expect the dependency to respect.ghc-lib-parser(Directories containing module interfacesghc-lib-parser4Names of the Haskell libraries provided by this unitghc-lib-parserNames of the external system libraries that this unit depends on. See also  field.ghc-lib-parserBecause of slight differences between the GHC dynamic linker (in GHC.Runtime.Linker) and the native system linker, some packages have to link with a different list of libraries when using GHC's. Examples include: libs that are actually gnu ld scripts, and the possibility that the .a libs do not exactly match the .so/.dll equivalents.7If this field is set, then we use that instead of the  field.ghc-lib-parserDirectories containing libraries provided by this unit. See also .It seems to be used to store paths to external library dependencies too.ghc-lib-parserDirectories containing the dynamic libraries provided by this unit. See also .It seems to be used to store paths to external dynamic library dependencies too.ghc-lib-parserNames of the external MacOS frameworks that this unit depends on.ghc-lib-parserDirectories containing MacOS frameworks that this unit depends on.ghc-lib-parser%Linker (e.g. ld) command line optionsghc-lib-parserC compiler options that needs to be passed to the C compiler when we compile some C code against this unit.ghc-lib-parserC header files that are required by this unit (provided by this unit or external)ghc-lib-parserDirectories containing C header files that this unit depends on.ghc-lib-parser.Paths to Haddock interface files for this unitghc-lib-parser2Paths to Haddock directories containing HTML filesghc-lib-parserModules exposed by the unit.A module can be re-exported from another package. In this case, we indicate the module origin in the second parameter.ghc-lib-parserHidden modules.These are useful for error reporting (e.g. if a hidden module is imported)ghc-lib-parserTrue if this unit has some module holes that need to be instantiated with real modules to make the unit usable (a.k.a. Backpack).ghc-lib-parserTrue if the unit is exposed. A unit could be installed in a database by "disabled" by not being exposed.ghc-lib-parser-True if the unit is trusted (cf Safe Haskell)ghc-lib-parserghc-boot('s UnitInfo, serialized to the database.ghc-lib-parser)Convert between GenericUnitInfo instancesghc-lib-parserAcquire an exclusive lock related to package DB under given location.ghc-lib-parser'Release the lock related to package DB.ghc-lib-parser:Read the part of the package DB that GHC is interested in.ghc-lib-parser=Read the part of the package DB that ghc-pkg is interested inNote that the Binary instance for ghc-pkg's representation of packages is not defined in this package. This is because ghc-pkg uses Cabal types (and Binary instances for these) which this package does not depend on.If we open the package db in read only mode, we get its contents. Otherwise we additionally receive a PackageDbLock that represents a lock on the database, so that we can safely update it later.ghc-lib-parser.Write the whole of the package DB, both parts.ghc-lib-parserPerform path/URL variable substitution as per the Cabal ${pkgroot} spec (http:/www.haskell.org pipermail libraries2009-May/011772.html) Paths/URLs can be relative to ${pkgroot} or ${pkgrooturl}. The "pkgroot" is the directory containing the package database.Also perform a similar substitution for the older GHC-specific "$topdir" variable. The "topdir" is the location of the ghc installation (obtained from the -B option).99- Safe-Inferredghc-lib-parserWhen invoking external tools as part of the compilation pipeline, we pass these a sequence of options on the command-line. Rather than just using a list of Strings, we use a type that allows us to distinguish between filepaths and 'other stuff'. The reason for this is that this type gives us a handle on transforming filenames, and filenames only, to whatever format they're expected to be on a particular platform..Nonejghc-lib-parser,Converts a 64-bit word into a base-62 string/ Safe-Inferred-pqrzwyxNone abcP Pcba0None ghc-lib-parserSettings for what GHC this is. ghc-lib-parserPaths to various files and directories used by GHC, including those that provide more settings. ghc-lib-parser)Settings for other executables GHC calls.Probably should further split down by phase, or split between platform-specific and platform-agnostic. ghc-lib-parserLLVM: opt llvm optimiser ghc-lib-parserLLVM: llc static compiler ghc-lib-parserLLVM: c compiler ghc-lib-parser?cached Fingerprint of sOpt_P See Note [Repeated -optP hashing] ghc-lib-parserLLVM: llvm optimiser ghc-lib-parserLLVM: llc static compiler ghc-lib-parserLLVM: c compiler ghc-lib-parser iserv options    1None   Safe-Inferred ghc-lib-parsermapAndUnzipM for triples ghc-lib-parserMonadic version of mapAccumL ghc-lib-parserMonadic version of mapSnd ghc-lib-parserMonadic version of concatMap ghc-lib-parserApplicative version of mapMaybe ghc-lib-parserMonadic version of fmap ghc-lib-parserMonadic version of fmap ghc-lib-parserMonadic version of }&, aborts the computation at the first True value ghc-lib-parserMonad version of |&, aborts the computation at the first False value ghc-lib-parserMonadic version of or ghc-lib-parser1Monadic version of foldl that discards its result ghc-lib-parser-Monadic version of fmap specialised for Maybe ghc-lib-parserMonadic version of when#, taking the condition in the monad ghc-lib-parserMonadic version of unless#, taking the condition in the monad ghc-lib-parserLike ), only it reverses the sense of the test. ghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs#46#"$TSX #6#"$4TS X   4 Safe-Inferred  5 Safe-Inferredz ghc-lib-parserA filepath like x86_64-linux-7.6.3 with the platform string to use when constructing platform-version-dependent files that need to co-exist.'ghc-pkg' falls back on the host platform if the settings file is missing, and so needs this since we don't have information about the host platform in as much detail as  , so we use  instead.  6 Safe-Inferred  7None ghc-lib-parserThis type is very similar to , but it omits the constructors that involve pretty-printing via 2 . Due to the implementation of x for  , this type can be caught as a .Note that this should only be used for throwing exceptions, not for catching, as 3 will not be converted to this type when catching. ghc-lib-parser(Some other fatal signal (SIGHUP,SIGTERM) ghc-lib-parser*Prints the short usage msg after the error ghc-lib-parserA problem with the command line arguments, but don't print usage. ghc-lib-parserThe  impossible happened. ghc-lib-parserThe user tickled something that's known not to work yet, but we're not counting it as a bug. ghc-lib-parserAn installation problem. ghc-lib-parser&An error in the user's code, probably. ghc-lib-parserThe name of this GHC. ghc-lib-parser;Append a description of the given exception to this string. ghc-lib-parserPanics and asserts. ghc-lib-parserPanics and asserts. ghc-lib-parserPanics and asserts. ghc-lib-parserThrow a failed assertion exception for a given filename and line number.  None ghc-lib-parser=GHC's own exception type error messages all take the form:  : If the location is on the command line, or in GHC itself, then ="ghc". All of the error types below correspond to a of "ghc", except for ProgramError (where the string is assumed to contain a location already, so we don't print one). ghc-lib-parser(Some other fatal signal (SIGHUP,SIGTERM) ghc-lib-parser*Prints the short usage msg after the error ghc-lib-parserA problem with the command line arguments, but don't print usage. ghc-lib-parserThe  impossible happened. ghc-lib-parserThe user tickled something that's known not to work yet, but we're not counting it as a bug. ghc-lib-parserAn installation problem. ghc-lib-parser&An error in the user's code, probably. ghc-lib-parserShow an exception as a string. ghc-lib-parserShow an exception which can possibly throw other exceptions. Used when displaying exception thrown within TH code. ghc-lib-parser;Append a description of the given exception to this string.Note that this uses @>, which may have some uninitialized fields if invoked before  has been called. If the error message to be printed includes a pretty-printer document which forces one of these fields this call may bottom. ghc-lib-parserLike try, but pass through UserInterrupt and Panic exceptions. Used when we want soft failures when reading interface files, for example. TODO: I'm not entirely sure if this is catching what we really want to catch ghc-lib-parserTemporarily install standard signal handlers for catching ^C, which just throw an exception in the current thread.$pqzyxw $  zyxw p q 8None ghc-lib-parserExpand occurrences of the $tooldir interpolation in a string on Windows, leave the string untouched otherwise. ghc-lib-parser.Returns a Unix-format path pointing to TopDir. ghc-lib-parser,Maybe TopDir path (without the '-B' prefix).ghc-lib-parserTopDir (in Unix format  separated) ghc-lib-parsertopdir  9NoneO  None-'# ghc-lib-parser'A call stack constraint, but only when  isDebugOn. ghc-lib-parser+Apply a function iff some condition is met. ghc-lib-parserA for loop: Compose a function with itself n times. (nth rather than twice) ghc-lib-parser3Like filter, only it reverses the sense of the test ghc-lib-parserUses a function to determine which of two output lists an input element should join ghc-lib-parser  is a kind of 0 that is lazy in the second list (observe the ~) ghc-lib-parser  is like  but is lazy in the second list. The length of the output is always the same as the length of the first list. ghc-lib-parser  is like  but is lazy in the second and third lists. The length of the output is always the same as the length of the first list. ghc-lib-parser  takes a list of Bools and a list of some elements and filters out these elements for which the corresponding value in the list of Bools is False. This function does not check whether the lists have equal length. ghc-lib-parser  takes a list of Bools and two lists as input, and outputs a new list consisting of elements from the last two input lists. For each Bool in the list, if it is J;, then it takes an element from the former list. If it is G, it takes an element from the latter list. The elements taken correspond to the index of the Bool in its list. For example: filterByLists [True, False, True, False] "abcd" "wxyz" = "axcz" This function does not check whether the lists have equal length. ghc-lib-parser  takes a list of Bools and a list of some elements and partitions the list according to the list of Bools. Elements corresponding to J+ go to the left; elements corresponding to G go to the right. For example, ;partitionByList [True, False, True] [1,2,3] == ([1,3], [2]) This function does not check whether the lists have equal length; when one list runs out, the function stops. ghc-lib-parserstretchZipWith p z f xs ys stretches ys by inserting z in the places where p returns True ghc-lib-parserThis has the effect of making the two lists have equal length by dropping the tail of the longer one. ghc-lib-parseratLength atLen atEnd ls n unravels list ls to position n . Precisely:  atLength atLenPred atEndPred ls n | n < 0 = atLenPred ls | length ls < n = atEndPred (n - length ls) | otherwise = atLenPred (drop n ls) ghc-lib-parser &(lengthExceeds xs n) = (length xs > n) ghc-lib-parser '(lengthAtLeast xs n) = (length xs >= n) ghc-lib-parser "(lengthIs xs n) = (length xs == n) ghc-lib-parser %(lengthIsNot xs n) = (length xs /= n) ghc-lib-parser &(lengthAtMost xs n) = (length xs <= n) ghc-lib-parser ((lengthLessThan xs n) == (length xs < n) ghc-lib-parserTrue if length xs == length ys ghc-lib-parserTrue if length xs <= length ys ghc-lib-parserTrue if length xs < length ys ghc-lib-parserSplit a list into chunks of n elements ghc-lib-parser8Replace the last element of a list with another element. ghc-lib-parserApply an effectful function to the last list element. Assumes a non-empty list (panics otherwise). ghc-lib-parser4Merge an unsorted list of sorted lists, for example: mergeListsBy compare [ [2,5,15], [1,10,100] ] = [1,2,5,10,15,100] O(n \log{} k) ghc-lib-parser=Remove duplicates but keep elements in order. O(n * log n) ghc-lib-parser+spanEnd p l == reverse (span p (reverse l)). The first list returns actually comes after the second list (when you look at the input list). ghc-lib-parser-Get the last two elements in a list. Partial! ghc-lib-parserSplit a list into its last element and the initial part of the list. %snocView xs = Just (init xs, last xs) for non-empty lists. snocView xs = Nothing otherwise. Unless both parts of the result are guaranteed to be used prefer separate calls to last + init. If you are guaranteed to use both, this will be more efficient. ghc-lib-parser=Convert a word to title case by capitalising the first letter ghc-lib-parserSearch for possible matches to the users input in the given list, returning a small number of ranked results ghc-lib-parser*Determine the $log_2$ of exact powers of 2 ghc-lib-parserA sample hash function for Strings. We keep multiplying by the golden ratio and adding. The implementation is: hashString = foldl' f golden where f m c = fromIntegral (ord c) * magic + hashInt32 m magic = 0xdeadbeef2Where hashInt32 works just as hashInt shown above.Knuth argues that repeated multiplication by the golden ratio will minimize gaps in the hash space, and thus it's a good choice for combining together multiple keys to form one.Here we know that individual characters c are often small, and this produces frequent collisions if we use ord c alone. A particular problem are the shorter low ASCII and ISO-8859-1 character strings. We pre-multiply by a magic twiddle factor to obtain a good distribution. In fact, given the following test: testp :: Int32 -> Int testp k = (n - ) . length . group . sort . map hs . take n $ ls where ls = [] : [c : l | l <- ls, c <- ['\0'..'\xff']] hs = foldl' f golden f m c = fromIntegral (ord c) * k + hashInt32 m n = 100000!We discover that testp magic = 0.QR   Q R   9  3 2:None+  ghc-lib-parserA colour/style for use with coloured. ghc-lib-parser;Parse the colour scheme from a string (presumably from the  GHC_COLORS environment variable). ghc-lib-parserAllow colours to be combined (e.g. bold + red); In case of conflict, right side takes precedence.  None-5?, ghc-lib-parserTakes a list of Maybes and returns the first Just if there is one, or Nothing otherwise. ghc-lib-parserFlipped version of  fromMaybe, useful for chaining. ghc-lib-parserTry performing an D action, failing on error.AHI    4;None4 ghc-lib-parserA  5 is a pointer to some array of Latin-1 encoded chars. ghc-lib-parserA  : is a UTF-8 encoded string together with a unique ID. All  s are stored in a global hashtable to support fast O(1) comparison.It is also associated with a lazy reference to the Z-encoding of this string which is used by the compiler internally. ghc-lib-parser*Lazily computed z-encoding of this string.Since  s are globally memoized this is computed at most once for any given string. ghc-lib-parser1Gives the UTF-8 encoded bytes corresponding to a  ghc-lib-parser1Gives the UTF-8 encoded bytes corresponding to a  ghc-lib-parser Create a   by copying an existing  ghc-lib-parser Create a   from an existing  without copying. ghc-lib-parserCreates a UTF-8 encoded   from a  ghc-lib-parser Creates a   from a UTF-8 encoded [Word8] ghc-lib-parserReturns the length of the   in characters ghc-lib-parserReturns True if the   is empty ghc-lib-parser"Unpacks and decodes the FastString ghc-lib-parser!Returns a Z-encoded version of a  . This might be the original, if it was already Z-encoded. The first time this function is applied to a particular  , the results are memoized. ghc-lib-parser Outputs a   with no decoding at all,, that is, you get the actual bytes in the   written to the . ghc-lib-parserWrap an unboxed address into a  . ghc-lib-parser Encode a  into a newly allocated   using Latin-1 encoding. The original string must not contain non-Latin-1 characters (above codepoint 0xff). ghc-lib-parser Decode a   back into a  using Latin-1 encoding. This does not free the memory associated with  . ghc-lib-parserReturn the length of a  + + <None8T ghc-lib-parser$Is this an acceptable variable name? ghc-lib-parser'Is this an acceptable constructor name? ghc-lib-parser Is this an acceptable type name? ghc-lib-parserIs this an acceptable alphanumeric variable name, assuming it starts with an acceptable letter? ghc-lib-parserIs this an acceptable symbolic variable name, assuming it starts with an acceptable character? ghc-lib-parserIs this an acceptable alphanumeric constructor name, assuming it starts with an acceptable letter? ghc-lib-parserIs this an acceptable symbolic constructor name, assuming it starts with an acceptable character?   =None8 ghc-lib-parserReplicate an 8-bit character >"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportableNoneM' ghc-lib-parserRendering mode. ghc-lib-parserNormal ghc-lib-parserWith zig-zag cuts ghc-lib-parser%No indentation, infinitely long lines ghc-lib-parserAll on one line ghc-lib-parserA rendering style. ghc-lib-parserThe rendering mode ghc-lib-parserLength of line, in chars ghc-lib-parser%Ratio of line length to ribbon length ghc-lib-parserThe TextDetails data typeA TextDetails represents a fragment of text that will be output at some point. ghc-lib-parserA single Char fragment ghc-lib-parserA whole String fragment ghc-lib-parserThe abstract type of documents. A Doc represents a *set* of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout. ghc-lib-parserA document of height and width 1, containing a literal character. ghc-lib-parser5A document of height 1 containing a literal string.   satisfies the following laws:   s     t =   (st)  ""   x = x, if x non-empty8The side condition on the last law is necessary because   "" has height 1, while   has no height. ghc-lib-parserSome text with any width. (text s = sizedText (length s) s) ghc-lib-parserSome text, but without any width. Use for non-printing text such as a HTML or Latex tags ghc-lib-parser2The empty document, with no height and no width.   is the identity for  ,  ,   and  ), and anywhere in the argument list for  ,  ,  ,  ,   etc. ghc-lib-parserReturns J if the document is empty ghc-lib-parserApply   to   if boolean is true. ghc-lib-parserList version of  . ghc-lib-parserList version of  . ghc-lib-parserList version of  . ghc-lib-parserNest (or indent) a document by a given number of positions (which may also be negative).   satisfies the laws:   0 x = x   k (  k' x) =   (k+k') x   k (x   y) =   k z     k y   k (x   y) =   k x     k y   k   =  x     k y = x   y, if x non-empty6The side condition on the last law is needed because   is a left identity for  . ghc-lib-parser "hang d1 n d2 = sep [d1, nest n d2] ghc-lib-parserApply   to the arguments if the first   is not empty. ghc-lib-parser punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn] ghc-lib-parserAbove, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example: % text "hi" $$ nest 5 (text "there") lays out as  hi there rather than  hi there  is associative, with identity  , and also satisfies(x   y)   z = x   (y   z), if y non-empty. ghc-lib-parserAbove, with no overlapping.   is associative, with identity  . ghc-lib-parser Beside.   is associative, with identity  . ghc-lib-parser;Beside, separated by space, unless one of the arguments is  .   is associative, with identity  . ghc-lib-parserEither   or  . ghc-lib-parserEither   or  . ghc-lib-parser"Paragraph fill" version of  . ghc-lib-parser"Paragraph fill" version of  . ghc-lib-parserThe default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5). ghc-lib-parser Render the Doc to a String using the given Style. ghc-lib-parserDefault TextDetails printer ghc-lib-parser The general rendering interface. ghc-lib-parserA ';' character ghc-lib-parserA ',' character ghc-lib-parserA : character ghc-lib-parserA space character ghc-lib-parserA '=' character ghc-lib-parserA '(' character ghc-lib-parserA ')' character ghc-lib-parserA '[' character ghc-lib-parserA ']' character ghc-lib-parserA '{' character ghc-lib-parserA '}' character ghc-lib-parser int n = text (show n) ghc-lib-parser integer n = text (show n) ghc-lib-parser float n = text (show n) ghc-lib-parser double n = text (show n) ghc-lib-parser rational n = text (show n) ghc-lib-parser%See Note [Print Hexadecimal Literals] ghc-lib-parserWrap document in '...' ghc-lib-parserWrap document in "..." ghc-lib-parserWrap document in (...) ghc-lib-parserWrap document in [...] ghc-lib-parserWrap document in {...} ghc-lib-parserRendering modeghc-lib-parser Line lengthghc-lib-parserRibbons per lineghc-lib-parserWhat to do with textghc-lib-parserWhat to do at the endghc-lib-parser The documentghc-lib-parserResult  5 5 6 62Nonep+ ghc-lib-parser'Represents a pretty-printable document.To display an  , use , , , or . Avoid calling . directly as it breaks the abstraction layer. ghc-lib-parserJust warn about an assertion failure, recording the given file and line number. Should typically be accessed with the WARN macros ghc-lib-parserWhen we print a binder, we often want to print its type too. The OutputableBndr class encapsulates this idea. ghc-lib-parser  is used to tell the thing that prints binder what language construct is binding the identifier. This can be used to decide how much info to print. Also see Note [Binding-site specific printing] in  GHC.Core.Ppr ghc-lib-parserThe x in (x. e) ghc-lib-parser+The x in case scrut of x { (y,z) -> ... } ghc-lib-parser+The y,z in case scrut of x { (y,z) -> ... } ghc-lib-parserThe x in (let x = rhs in e) ghc-lib-parser(Class designating that some type has an   representation ghc-lib-parser stopghc-lib-parserUse   field as depthghc-lib-parser$NB: This won't ever show package IDsghc-lib-parserDefault style for error messages, when we don't know PrintUnqualified It's a bit of a hack because it doesn't take into account what's in scope Only used for desugarer warnings, and typechecker errors in interface sigsghc-lib-parser!Style for printing error messagesghc-lib-parser6Truncate a list that is longer than the current depth.ghc-lib-parser'Indicate if -dppr-debug mode is enabledghc-lib-parser,Says what to do with and without -dppr-debugghc-lib-parser7Says what to do with -dppr-debug; without, return emptyghc-lib-parserThe analog of   for  , which tries to make sure the terminal doesn't get screwed up by the ANSI color codes if an exception is thrown during pretty-printing.ghc-lib-parserLike  but appends an extra newline.ghc-lib-parserLike  but specialized with   and  -. This is typically used to output C-- code.ghc-lib-parserAn efficient variant of  specialized for   that outputs to a  .ghc-lib-parserdoublePrec p n shows a floating point number n with p. digits of precision after the decimal point.ghc-lib-parserIndent   some specified amountghc-lib-parser Join two  $ together horizontally without a gapghc-lib-parser Join two  . together horizontally with a gap between themghc-lib-parser Join two   together vertically; if there is no vertical overlap it "dovetails" the two onto one lineghc-lib-parser Join two   together verticallyghc-lib-parser Concatenate   horizontallyghc-lib-parser Concatenate  + horizontally with a space between each oneghc-lib-parser Concatenate   vertically with dovetailingghc-lib-parserSeparate: is either like  or like , depending on what fitsghc-lib-parserCatenate: is either like  or like , depending on what fitsghc-lib-parserA paragraph-fill combinator. It's much like sep, only it keeps fitting things on one line until it can't fit any more.ghc-lib-parserThis behaves like , but it uses ( for horizontal conposition rather than ghc-lib-parserThis behaves like , but does not indent the second document when the header is empty.ghc-lib-parser.Apply the given colour/style for the argument.)Only takes effect if colours are enabled.ghc-lib-parser2Special combinator for showing character literals.ghc-lib-parser/Special combinator for showing string literals.ghc-lib-parser3Special combinator for showing bytestring literals.ghc-lib-parser0Special combinator for showing unboxed literals.ghc-lib-parser9Normalise, escape and render a string representing a pathe.g. "c:\whatever"ghc-lib-parserReturns the separated concatenation of the pretty printed things.ghc-lib-parserReturns the comma-separated concatenation of the pretty printed things.ghc-lib-parserReturns the comma-separated concatenation of the quoted pretty printed things. ,y,z] ==> `x', `y', `z'ghc-lib-parser&Converts an integer to a verbal index: speakNth 1 = text "first" speakNth 5 = text "fifth" speakNth 21 = text "21st"ghc-lib-parser-Converts an integer to a verbal multiplicity: speakN 0 = text "none" speakN 5 = text "five" speakN 10 = text "10"ghc-lib-parserConverts an integer and object description to a statement about the multiplicity of those objects: speakNOf 0 (text "melon") = text "no melons" speakNOf 1 (text "melon") = text "one melon" speakNOf 3 (text "melon") = text "three melons"ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a list: plural [] = char 's' plural ["Hello"] = empty plural ["Hello", "World"] = char 's'ghc-lib-parserDetermines the form of to be appropriate for the length of a list: isOrAre [] = text "are" isOrAre ["Hello"] = text "is" isOrAre ["Hello", "World"] = text "are"ghc-lib-parserDetermines the form of to do appropriate for the length of a list: doOrDoes [] = text "do" doOrDoes ["Hello"] = text "does" doOrDoes ["Hello", "World"] = text "do"ghc-lib-parserDetermines the form of possessive appropriate for the length of a list: itsOrTheir [x] = text "its" itsOrTheir [x,y] = text "their" itsOrTheir [] = text "their" -- probably avoid thisghc-lib-parser&Throw an exception saying "bug in GHC"ghc-lib-parser3Throw an exception saying "this isn't finished yet"ghc-lib-parserThrow an exception saying "bug in pgm being compiled" (used for unusual program errors)ghc-lib-parser!If debug output is on, show some   on the screenghc-lib-parser!If debug output is on, show some   on the screenghc-lib-parserpprTraceWith desc f x is equivalent to pprTrace desc (f x) x. This allows you to print details from the returned value as well as from ambient variables.ghc-lib-parserpprTraceIt desc x is equivalent to pprTrace desc (ppr x) xghc-lib-parserpprTraceException desc x action< runs action, printing a message if it throws an exception.ghc-lib-parser!If debug output is on, show some  7 on the screen along with a call stack when available.ghc-lib-parserPanic with an assertion failure, recording the given file and line number. Should typically be accessed with the ASSERT family of macrosghc-lib-parser The headerghc-lib-parserAmount to indent the hung bodyghc-lib-parser3The hung body, indented and placed below the headerghc-lib-parserThe punctuationghc-lib-parserThe list that will have punctuation added between every adjacent pair of elementsghc-lib-parserPunctuated listghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parser  where the things have been pretty printed, comma-separated and finally packed into a paragraph.ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parser  where the things have been pretty printed, bar-separated and finally packed into a paragraph.            ANone'(tghc-lib-parser-Simple data type to represent JSON documents.  BNonev!ghc-lib-parser9Subset of UnitInfo: just enough to pretty-print a unit-idInstead of printing the unit-id which may contain a hash, we print: package-version:componentnameghc-lib-parserSource package nameghc-lib-parserSource package versionghc-lib-parserComponent nameENoney ghc-lib-parserUsed when outputting warnings: if a reason is given, it is displayed. If a warning isn't controlled by a flag, this is made explicit at the point of use.ghc-lib-parser!Warning was enabled with the flagghc-lib-parserWarning was made an error because of -Werror or -Werror=WarningFlagghc-lib-parser-Enumerates the simple on-or-off dynamic flagsghc-lib-parser.Append dump output to files instead of stdout.ghc-lib-parser)Use the cfg based block layout algorithm.ghc-lib-parser+Layout based on last instruction per block.ghc-lib-parser -fPICghc-lib-parser -fPIEghc-lib-parser -pieghc-lib-parserSuppress timestamps in dumpsghc-lib-parserDebugging flagsghc-lib-parser#Dump the cfg used for block layout.FNoneghc-lib-parserA way4Don't change the constructor order as it us used by  to create a unique tag (e.g. thr_debug_p) which is expected by other tools (e.g. Cabal).ghc-lib-parser,for GHC API clients building custom variantsghc-lib-parser'(RTS only) Multithreaded runtime systemghc-lib-parser1Debugging, enable trace messages and extra checksghc-lib-parser:Profiling, enable cost-centre stacks and profiling reportsghc-lib-parser(RTS only) enable event loggingghc-lib-parserDynamic linkingghc-lib-parserTest if a ways is enabledghc-lib-parser)Check if a combination of ways is allowedghc-lib-parser'Unique tag associated to a list of waysghc-lib-parser-Unique build-tag associated to a list of waysRTS only ways are filtered out because they have no impact on the build.ghc-lib-parser$Unique build-tag associated to a wayghc-lib-parserReturn true for ways that only impact the RTS, not the generated codeghc-lib-parser*Turn these flags on when enabling this wayghc-lib-parser+Turn these flags off when enabling this wayghc-lib-parser;Pass these options to the C compiler when enabling this wayghc-lib-parser3Pass these options to linker when enabling this wayghc-lib-parser=Pass these options to the preprocessor when enabling this wayghc-lib-parserConsult the RTS to find whether it has been built with profiling enabled.ghc-lib-parserConsult the RTS to find whether GHC itself has been built with dynamic linking. This can't be statically known at compile-time, because we build both the static and dynamic versions together with -dynamic-too.ghc-lib-parserReturn host "full" ways (i.e. ways that have an impact on the compilation, not RTS only ways). These ways must be used when compiling codes targeting the internal interpreter.GNone5W  HNone5nghc-lib-parserStrict left fold.ghc-lib-parser?Compare not only the values but also the structure of two listsghc-lib-parser?Compare not only the values but also the structure of two lists555INoneghc-lib-parser0Assumes that the arguments contain no duplicatesghc-lib-parser4Calculate the set difference of two lists. This is O((m + n) log n), where we subtract a list of n elements from a list of m elements.3Extremely short cases are handled specially: When m or n is 0, this takes O(1) time. When m is 1, it takes O(n) time.  JNone5ghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputsghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs""33PNone#$&23567>?R/ghc-lib-parser$Layout information for declarations.ghc-lib-parser$Explicit braces written by the user. 'class C a where { foo :: a; bar :: a } ghc-lib-parser0Virtual braces inserted by the layout algorithm. &class C a where foo :: a bar :: a ghc-lib-parserEmpty or compiler-generated blocks do not have layout information associated with them.ghc-lib-parserA location as produced by the parser. Consists of two components:'The location in the file, adjusted for  line and {-" LINE ... #-} pragmas (RealSrcLoc)The location in the string buffer (BufPos) with monotonicity guarantees (see #17632)ghc-lib-parserWe attach SrcSpans to lots of things, so let's have a datatype for it.ghc-lib-parser Source SpanA  identifies either a specific portion of a text file or a human-readable description of a location.ghc-lib-parserStringBuffer Source Spanghc-lib-parserA  delimits a portion of a text file. It could be represented by a pair of (line,column) coordinates, but in fact we optimise slightly by using more compact representations for single-line and zero-length spans, both of which are quite common.-The end position is defined to be the column after the end of the span. That is, a span of (1,1)-(1,2) is one character long, and a span of (1,1)-(1,1) is zero characters long.Real Source Spanghc-lib-parserSource Locationghc-lib-parser30-based offset identifying the raw location in the  StringBuffer.The lexer increments the  every time a character (UTF-8 code point) is read from the input buffer. As UTF-8 is a variable-length encoding and  StringBuffer% needs a byte offset for indexing, a  cannot be used for indexing.The parser guarantees that  are monotonic. See #17632. This means that syntactic constructs that appear later in the  StringBuffer" are guaranteed to have a higher . Constrast that with , which does *not* make the analogous guarantee about higher line/column numbers.This is due to  line and {-3 LINE ... #-} pragmas that can arbitrarily modify  . Notice how  setSrcLoc and resetAlrLastLoc in GHC.Parser.Lexer update  , modifying  but preserving .Monotonicity makes  useful to determine the order in which syntactic elements appear in the source. Consider this example (haddockA041 in the test suite):haddockA041.hs {- LANGUAGE CPP -} -- | Module header documentation module Comments_and_CPP_include where #include "IncludeMe.hs"IncludeMe.hs: -- | Comment on T data T = MkT -- ^ Comment on MkT#After the C preprocessor runs, the  StringBuffer will contain a program that looks like this (unimportant lines at the beginning removed):# 1 "haddockA041.hs" {- LANGUAGE CPP -} -- | Module header documentation module Comments_and_CPP_include where # 1 "IncludeMe.hs" 1 -- | Comment on T data T = MkT -- ^ Comment on MkT # 7 "haddockA041.hs" 2The line pragmas inserted by CPP make the error messages more informative. The downside is that we can't use RealSrcLoc to determine the ordering of syntactic elements.With RealSrcLoc, we have the following location information recorded in the AST: * The module name is located at haddockA041.hs:3:8-31 * The Haddock comment "Comment on T" is located at IncludeMe:1:1-17 * The data declaration is located at IncludeMe.hs:2:1-32Is the Haddock comment located between the module name and the data declaration? This is impossible to tell because the locations are not comparable; they even refer to different files.On the other hand, with , we have the following location information: * The module name is located at 846-870 * The Haddock comment "Comment on T" is located at 898-915 * The data declaration is located at 916-928Aside: if you're wondering why the numbers are so high, try running ghc -E haddockA041.hs and see the extra fluff that CPP inserts at the start of the file.For error messages,  is not useful at all. On the other hand, this is exactly what we need to determine the order of syntactic elements: 870 < 898, therefore the Haddock comment appears *after* the module name. 915 < 916, therefore the Haddock comment appears *before* the data declaration.We use  in in GHC.Parser.PostProcess.Haddock to associate Haddock comments with parts of the AST using location information (#17544).ghc-lib-parserReal Source Location'Represents a single point within a fileghc-lib-parserBuilt-in "bad"  values for particular locationsghc-lib-parserBuilt-in "bad"  values for particular locationsghc-lib-parserBuilt-in "bad"  values for particular locationsghc-lib-parserCreates a "bad" 4 that has no detailed information about its locationghc-lib-parserGives the filename of the ghc-lib-parser%Raises an error when used on a "bad" ghc-lib-parser%Raises an error when used on a "bad" ghc-lib-parser Move the  down by one line if the character is a newline, to the next 8-char tabstop if it is a tab, and across by one character in any other caseghc-lib-parserBuilt-in "bad" ,s for common sources of location uncertaintyghc-lib-parserBuilt-in "bad" ,s for common sources of location uncertaintyghc-lib-parserBuilt-in "bad" ,s for common sources of location uncertaintyghc-lib-parserBuilt-in "bad" ,s for common sources of location uncertaintyghc-lib-parserCreate a "bad" " that has not location informationghc-lib-parser Create a  corresponding to a single pointghc-lib-parser Create a  between two points in a fileghc-lib-parser Create a  between two points in a fileghc-lib-parser Combines two  into one that spans at least all the characters within both spans. Returns UnhelpfulSpan if the files differ.ghc-lib-parserConvert a SrcSpan into one that represents only its first characterghc-lib-parser Test if a 1 is "good", i.e. has precise location informationghc-lib-parserTrue if the span is known to straddle only one line. For "bad" , it returns Falseghc-lib-parserTests whether the first span "contains" the other span, meaning that it covers at least as much source code. True where spans are equal.ghc-lib-parser)Returns the location at the start of the  or a "bad"  if that is unavailableghc-lib-parser'Returns the location at the end of the  or a "bad"  if that is unavailableghc-lib-parserObtains the filename for a  if it is "good"ghc-lib-parserCombine locations from two % things and add them to a third thingghc-lib-parser.Tests whether the two located things are equalghc-lib-parser,Tests the ordering of the two located thingsghc-lib-parser Compare the  of two located things./Precondition: both operands have an associated .ghc-lib-parserStrategies for ordering sghc-lib-parserStrategies for ordering sghc-lib-parserStrategies for ordering sghc-lib-parserDetermines whether a span encloses a given line and column indexghc-lib-parser4Determines whether a span is enclosed by another oneghc-lib-parser4Determines whether a span is enclosed by another oneghc-lib-parser fib x has representation arity 1 ( x, y +) -> fib (x + y) has representation arity 2ghc-lib-parserThe number of value arguments that can be applied to a value before it does "real work". So: fib 100 has arity 0 x -> fib x has arity 1 See also Note [Definition of arity] in GHC.Core.Opt.Arityghc-lib-parserTags are allocated from here for real constructors or for superclass selectorsghc-lib-parser$It is always safe to assume that an Id) has no lambda-bound variable informationghc-lib-parser=Pretty print an alternative in an unboxed sum e.g. "| a | |".ghc-lib-parser/Special combinator for showing string literals.ghc-lib-parserA representation of infinityghc-lib-parserTurn a positive number into an , where 0 represents infinityghc-lib-parserInject any integer into an ghc-lib-parserIf there is any  interesting identifier occurrence, then the aggregated occurrence info of that identifier is considered interesting.ghc-lib-parserIf any occurrence of an identifier is inside a lambda, then the occurrence info of that identifier marks it as occurring inside a lambdaghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parserAlternative (one-based)ghc-lib-parserArityghc-lib-parser  where the alternative havs been pretty printed and finally packed into a paragraph.TNoneBghc-lib-parser%Class of things that we can obtain a  fromghc-lib-parserUnique identifier.The type of unique identifiers that are used in many places in GHC for fast ordering and equality tests. You should generate these with the functions from the  UniqSupply moduleThese are sometimes also referred to as "keys" in comments in GHC.ghc-lib-parserThe interface file symbol-table encoding assumes that known-key uniques fit in 30-bits; verify this.3See Note [Symbol table representation of names] in GHC.Iface.Binary for details.--UNone5ڎghc-lib-parser)A monad for generating unique identifiersghc-lib-parserGet a new UniqueSupplyghc-lib-parserGet a new unique identifierghc-lib-parser.Get an infinite list of new unique identifiersghc-lib-parser/A monad which just gives the ability to obtain sghc-lib-parser Unique SupplyA value of type  is unique, and it can supply one distinct . Also, from the supply, one can also manufacture an arbitrary number of further  UniqueSupply values, which will be distinct from the first and from all others.ghc-lib-parserCreate a unique supply out of thin air. The character given must be distinct from those of all calls to this function in the compiler for the values generated to be truly unique.ghc-lib-parser Build two 6 from a single one, each of which can supply its own .ghc-lib-parserCreate an infinite list of  from a single oneghc-lib-parser Obtain the  from this particular ghc-lib-parserObtain an infinite list of : that can be generated by constant splitting of the supplyghc-lib-parser Obtain the  from this particular , and a new supplyghc-lib-parserRun the  action, returning the final ghc-lib-parserRun the  action, discarding the final VNone3` ghc-lib-parserA wrapper around  with the sole purpose of informing call sites that the provided 7 and 8 instances are nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM to learn about determinism.ghc-lib-parserA finite map from uniques* of one type to elements in another type.The key is just here to keep us honest. It's always safe to use a single type as key. If two types don't overlap in their uniques it's also safe to index the same map at multiple key types. But this is very much discouraged.ghc-lib-parserAdd elements to the map, combining existing values with inserted ones using the given function.ghc-lib-parser1`plusUFM_CD f m1 d1 m2 d2` merges the maps using f! as the combinding function and d1 resp. d2/ as the default value if there is no entry in m1 reps. m2-. The domain is the union of the domains of m1 and m2.Representative example: plusUFM_CD f {A: 1, B: 2} 23 {B: 3, C: 4} 42 == {A: f 1 42, B: f 2 3, C: f 23 4 } ghc-lib-parser,`plusUFM_CD2 f m1 m2` merges the maps using f$ as the combining function. Unlike =, a missing value is not defaulted: it is instead passed as H to f. f' can never have both its arguments be H.`plusUFM_CD2 f m1 m2` is the same as `plusUFM_CD f (mapUFM Just m1) Nothing (mapUFM Just m2) Nothing`.ghc-lib-parser Cast the key domain of a UniqFM.As long as the domains don't overlap in their uniques this is safe.ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetEltsUFM.ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetUFMToList.ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.ghc-lib-parserInherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM to learn about determinism.ghc-lib-parserInherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM to learn about determinism.ghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser + where the things have been pretty printedghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser + where the things have been pretty printedWNone '(.>Zghc-lib-parserInformation we keep around during interface file serialization/deserialization. Namely we keep the functions for serializing and deserializing s and  s. We do this because we actually use serialization in two distinct settings,+When serializing interface files themselvesWhen computing the fingerprint of an IfaceDecl (which we computing by hashing its Binary serialization)These two settings have different needs while serializing Names:Names in interface files are serialized via a symbol table (see Note [Symbol table representation of names] in GHC.Iface.Binary).During fingerprinting a binding Name is serialized as the OccName and a non-binding Name is serialized as the fingerprint of the thing they represent. See Note [Fingerprinting IfaceDecls] for further discussion.ghc-lib-parserserialize a non-binding ( (e.g. a reference to another binding).ghc-lib-parserserialize a binding  (e.g. the name of an IfaceDecl)ghc-lib-parserEncode the argument in it's full length. This is different from many default binary instances which make no guarantee about the actual encoding and might do things use variable length encoding.ghc-lib-parserDo not rely on instance sizes for general types, we use variable length encoding for many of them.ghc-lib-parser$Get access to the underlying buffer.0It is quite important that no references to the ; leak out of the continuation lest terrible things happen.ghc-lib-parserhow to deserialize sghc-lib-parserhow to serialize non-binding sghc-lib-parserhow to serialize binding s..,Noneghc-lib-parser2A ModuleName is essentially a simple string, e.g.  Data.List.ghc-lib-parser6Compares module names lexically, rather than by their sghc-lib-parserReturns the string version of the module name, with dots replaced by slashes.ghc-lib-parserReturns the string version of the module name, with dots replaced by colons.  XNoneghc-lib-parserWhen we are given files (modified by -x arguments) we need to determine if they are Haskellish or not to figure out how we should try to compile it. The rules are: If no -x flag was specified, we check to see if the file looks like a module name, has no extension, or has a Haskell source extension.If an -x flag was specified, we just make sure the specified suffix is a Haskell one.11YNone35?ghc-lib-parser(Type of unique deterministic finite mapsThe key is just here to keep us honest. It's always safe to use a single type as key. If two types don't overlap in their uniques it's also safe to index the same map at multiple key types. But this is very much discouraged.ghc-lib-parserPerforms a deterministic fold over the UniqDFM. It's O(n log n) while the corresponding function on  is O(n).ghc-lib-parserPerforms a nondeterministic strict fold over the UniqDFM. It's O(n), same as the corresponding function on . If you use this please provide a justification why it doesn't introduce nondeterminism.ghc-lib-parser Converts  to a list, with elements in deterministic order. It's O(n log n) while the corresponding function on  is O(n).ghc-lib-parser>Partition UniqDFM into two UniqDFMs according to the predicateghc-lib-parser(Delete a list of elements from a UniqDFMghc-lib-parser7This allows for lossy conversion from UniqDFM to UniqFMghc-lib-parser(Apply a function to a particular elementghc-lib-parser(Apply a function to a particular elementghc-lib-parserThe expression (alterUDFM f k map) alters value x at k, or absence thereof. alterUDFM can be used to insert, delete, or update a value in UniqDFM. Use addToUDFM, delFromUDFM or adjustUDFM when possible, they are more efficient.ghc-lib-parser,Map a function over every value in a UniqDFMghc-lib-parser Cast the key domain of a UniqFM.As long as the domains don't overlap in their uniques this is safe.ghc-lib-parserDeterministic, in O(n log n).ghc-lib-parserDeterministic, in O(n log n).ghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser + where the things have been pretty printed--ZNone3Oghc-lib-parserWhat's the point you might ask? We might have changed an object without it's key changing. In which case this lookup makes sense.ghc-lib-parser converts a  a into a  a0 assuming, without checking, that it maps each  to a value that has that . See Note [UniqSet invariant].$$[None33None %3567>R& ghc-lib-parserAn   is an   with the invariant that it only refers to an indefinite library; i.e., one that can be instantiated. ghc-lib-parserA Module is a pair of a   and a . ghc-lib-parserA unit identifier identifies a (possibly partially) instantiated library. It is primarily used as part of  , which in turn is used in Name=, which is used to give names to entities when typechecking.#There are two possible forms for a  :1) It can be a , in which case we just have a  that uniquely identifies some fully compiled, installed library we have on disk.2) It can be an . When we are typechecking a library with missing holes, we may need to instantiate a library on the fly (in which case we don't have any on-disk representation.) In that case, you have an , which explicitly records the instantiation, so that we can substitute over it. ghc-lib-parser6A generic module is a pair of a unit identifier and a . ghc-lib-parserA UnitId identifies a built library in a database and is used to generate unique symbols, etc. It's usually of the form:pkgname-1.2:libname+hash(These UnitId are provided to us via the  -this-unit-id flag.The library in question may be definite or indefinite; if it is indefinite, none of the holes have been filled (we never install partially instantiated libraries as we can cheaply instantiate them on-the-fly, cf VirtUnit). Put another way, an installed unit id is either fully instantiated, or not instantiated at all. ghc-lib-parserUnit the module belongs to ghc-lib-parserModule name (e.g. A.B.C)ghc-lib-parser"This data type just pairs a value - with an IsBootInterface flag. In practice,  is usually a Module or  ModuleName'.ghc-lib-parserIndicates whether a module name is referring to a boot interface (hs-boot file) or regular module (hs file). We need to treat boot modules specially when building compilation graphs, since they break cycles. Regular source files and signature files are treated equivalently.ghc-lib-parserUnit identifierghc-lib-parser.Cache for some unit info retrieved from the DBghc-lib-parser3A definite unit (i.e. without any free module hole)ghc-lib-parserA  is an   with the invariant that it only refers to a definite library; i.e., one we have generated code for.ghc-lib-parserThe full hashed unit identifier, including the component id and the hash.ghc-lib-parserAn instantiated unit.It identifies an indefinite library (with holes) that has been instantiated.This unit may be indefinite or not (i.e. with remaining holes or not). If it is definite, we don't know if it has already been compiled and installed in a database. Nevertheless, we have a mechanism called "improvement" to try to match a fully instantiated unit with existing compiled and installed units: see Note [VirtUnit to RealUnit improvement].?An indefinite unit identifier pretty-prints to something like p[H= H ,A=aimpl:A>] (p is the  5, and the brackets enclose the module substitution).ghc-lib-parserA private, uniquely identifying representation of an InstantiatedUnit. This string is completely private to GHC and is just used to get a unique.ghc-lib-parserCached unique of .ghc-lib-parser'The indefinite unit being instantiated.ghc-lib-parserThe sorted (by ) instantiations of this unit.ghc-lib-parser$A cache of the free module holes of &. This lets us efficiently tell if a  has been fully instantiated (empty set of free module holes) and whether or not a substitution can have any effect.ghc-lib-parserInstalled definite unit (either a fully instantiated unit or a closed unit)ghc-lib-parserVirtual unit instantiated on-the-fly. It may be definite if all the holes are instantiated but we don't have code objects for it.ghc-lib-parserFake hole unitghc-lib-parserAn  is a  " whose unit is identified with an .ghc-lib-parserA  is a  # whose unit is identified with an  .ghc-lib-parser2Compares unit ids lexically, rather than by their sghc-lib-parser+Retrieve the set of free module holes of a  .ghc-lib-parserCalculate the free holes of a  . If this set is non-empty, this module was defined in an indefinite library that had required signatures.If a module has free holes, that means that substitutions can operate on it; if it has no free holes, substituting over a module has no effect.ghc-lib-parser Create a new ' given an explicit module substitution.ghc-lib-parser Create a new ' given an explicit module substitution.ghc-lib-parser*Smart constructor for instantiated GenUnitghc-lib-parserSmart constructor for VirtUnitghc-lib-parser+Create a new simple unit identifier from a  . Internally, this is primarily used to specify wired-in unit identifiers.ghc-lib-parserMap over the unit type of a  ghc-lib-parserReturn the UnitId of the Unit. For on-the-fly instantiated units, return the UnitId of the indefinite unit this unit is an instance of.ghc-lib-parser=Return the virtual UnitId of an on-the-fly instantiated unit.ghc-lib-parserA  % is definite if it has no free holes.ghc-lib-parserThis is the package Id for the current program. It is the default package Id if you don't specify a package name. We don't add this prefix to symbol names, since there can be only one main package per program.            \None]None ghc-lib-parserModule LocationWhere a module lives on the file system: the actual locations of the .hs, .hi and .o files, if we have them.For a module in another unit, the ml_hs_file and ml_obj_file components of ModLocation are undefined.The locations specified by a ModLocation may or may not correspond to actual files yet: for example, even if the object file doesn't exist, the ModLocation still contains the path to where the object file will reside if/when it is created.ghc-lib-parserThe source file, if we have one. Package modules probably don't have source files.ghc-lib-parserWhere the .hi file is, whether or not it exists yet. Always of form foo.hi, even if there is an hi-boot file (we add the -boot suffix later)ghc-lib-parserWhere the .o file is, whether or not it exists yet. (might not exist either because the module hasn't been compiled yet, or because it is part of a unit with a .a file)ghc-lib-parser6Where the .hie file is, whether or not it exists yet.ghc-lib-parserAdd the -boot suffix to .hs, .hi and .o filesghc-lib-parserAdd the -boot suffix if the Bool argument is Trueghc-lib-parserAdd the -boot4 suffix to all file paths associated with the moduleghc-lib-parserAdd the -boot suffix to all output file paths associated with the module, not including the input file itself  ^NoneKghc-lib-parserA map keyed off of ghc-lib-parserA map keyed off of s (actually, their s) Has deterministic folds and can be deterministically converted to a listghc-lib-parserA map keyed off of s (actually, their s)ghc-lib-parser A set of  sghc-lib-parserA map keyed off of  s))_None #$35>%, ghc-lib-parserA  % is definite if it has no free holes.ghc-lib-parser!Get a string representation of a   that's unique and stable across recompilations. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal"ghc-lib-parserThis gives a stable ordering, as opposed to the Ord instance which gives an ordering based on the Uniques of the components, which may not be stable from run to run of the compiler.ghc-lib-parser Test if a   corresponds to a given , modulo instantiation.ghc-lib-parser Test if a   corresponds to a given  , modulo instantiation.ghc-lib-parserGiven a possibly on-the-fly instantiated module, split it into a   that we definitely can find on-disk, as well as an instantiation if we need to instantiate it on the fly. If the instantiation is Nothing" no on-the-fly renaming is needed.ghc-lib-parserReturn the unit-id this unit is an instance of and the module instantiations (if any).ghc-lib-parser4Remove instantiations of the given instantiated unitghc-lib-parser;Remove instantiations of the given module instantiated unitghc-lib-parser$Test if a Module is not instantiatedghc-lib-parserCreate a hole Module     None #$>+Nghc-lib-parserInformation about an installed unit (units are identified by their internal UnitId)ghc-lib-parserInformation about an installed unit (units are identified by their database UnitKey)ghc-lib-parserA unit key in the databaseghc-lib-parser#Information about an installed unitWe parameterize on the unit identifier: * UnitKey: identifier used in the database (cf 5) * UnitId: identifier used to generate code (cf )These two identifiers are different for wired-in packages. See Note [About Units] in GHC.Unitghc-lib-parser9Convert a DbUnitInfo (read from a package database) into ghc-lib-parserMap over the unit parameterghc-lib-parserMake a   from a  If the unit is definite, make a  from  field."If the unit is indefinite, make a  from  and 8 fields. Note that in this case we don't keep track of . It can be retrieved later with "improvement", i.e. matching on `unitInstanceOf/unitInstantiations` fields (see Note [About units] in GHC.Unit).ghc-lib-parser$Create a UnitPprInfo from a UnitInfo4\[ZY4\[ZY`None,ghc-lib-parserThe class of a register. Used in the register allocator. We treat all registers in a class as being interchangeable.aNone0ghc-lib-parser"A register, either virtual or realghc-lib-parserRealRegs are machine regs which are available for allocation, in the usual way. We know what class they are, because that's part of the processor's architecture.RealRegPairs are pairs of real registers that are allocated together to hold a larger value, such as with Double regs on SPARC.ghc-lib-parser4An identifier for a primitive real machine register.ghc-lib-parserThe patch function supplied by the allocator maps VirtualReg to RealReg regs, but sometimes we want to apply it to plain old Reg.ghc-lib-parserPrint a reg in a generic manner If you want the architecture specific names, then use the pprReg function from the appropriate Ppr module. None&4 ghc-lib-parser*Edge direction based on DFS Classificationghc-lib-parser7Loop back towards the root node. Eg backjumps in loopsghc-lib-parserv -> vghc-lib-parser&Representation for nodes of the Graph.The payload1 is user data, just carried around in this moduleThe key is the node identifier. Key has an Ord instance for performance reasons.The [key] are the dependencies of the node; it's ok to have extra keys in the dependencies that are not the key of any Node in the graphghc-lib-parser User dataghc-lib-parserUser defined node idghc-lib-parser#Dependencies/successors of the nodeghc-lib-parserFind a reasonably short cycle a->b->c->a, in a strongly connected component. The input nodes are presumed to be a SCC, so you can start anywhere.ghc-lib-parser1Given a list of roots return all reachable nodes.ghc-lib-parserGiven a start vertex, a way to get successors from a node and a list of (directed) edges classify the types of edges.!!bNone35675wdNone39ghc-lib-parser A C type, used in CAPI FFI callsw : w  '{-# CTYPE' , w,w , w '#-}',ghc-lib-parser,How to call a particular function in C-land.ghc-lib-parserMight invoke Haskell GC, or do a call back, or switch threads, etc. So make sure things are tidy before the call. Additionally, in the threaded RTS we arrange for the external call to be executed by a separate OS thread, i.e., _concurrently_ to the execution of other Haskell threads.ghc-lib-parserLike PlaySafe, but additionally the worker thread running this foreign call may be unceremoniously killed, so it must be scheduled on an unbound thread.ghc-lib-parserNone of the above can happen; the call will return without interacting with the runtime system at all. Specifically:No GC No call backs No blockingNo precise exceptions!!eNone=ghc-lib-parserThe arity of the wrapped  is the arity at which it is safe to unleash. See Note [Understanding DmdType and StrictSig] in GHC.Types.Demandghc-lib-parserThe abstract domain A_t+ from the original 'CPR for Haskell' paper.ghc-lib-parserNumber of value arguments the denoted expression eats before returning the ghc-lib-parser) eventually unleashed when applied to  argumentsghc-lib-parser'The constructed product result lattice.  NoCPR | ConCPR ConTag | BotCPR ghc-lib-parserTurns a  computed for the particular  into a  unleashable at that arity. See Note [Understanding DmdType and StrictSig] in GHC.Types.Demand ghc-lib-parserOnly print the CPR result   fNoneH+ ghc-lib-parserA StringBuffer is an internal pointer to a sized chunk of bytes. The bytes are intended to be *immutable*. There are pure operations to read the contents of a StringBuffer.A StringBuffer may have a finalizer, depending on how it was obtained. ghc-lib-parserRead a file into a  . The resulting buffer is automatically managed by the garbage collector. ghc-lib-parser Encode a  into a   as UTF-8. The resulting buffer is automatically managed by the garbage collector. ghc-lib-parser/Return the first UTF-8 character of a nonempty  2 and as well the remaining portion (analogous to ). Warning:# The behavior is undefined if the   is empty. The result shares the same buffer as the original. Similar to 0, if the character cannot be decoded as UTF-8, '\0' is returned. ghc-lib-parser/Return the first UTF-8 character of a nonempty   (analogous to ). Warning:# The behavior is undefined if the   is empty. Similar to 0, if the character cannot be decoded as UTF-8, '\0' is returned. ghc-lib-parser Return a  7 with the first UTF-8 character removed (analogous to ). Warning:# The behavior is undefined if the  ? is empty. The result shares the same buffer as the original. ghc-lib-parser Return a   with the first n bytes removed. Warning:2 If there aren't enough characters, the returned   will be invalid and any use of it may lead to undefined behavior. The result shares the same buffer as the original. ghc-lib-parser-Compute the difference in offset between two   s that share the same buffer. Warning:# The behavior is undefined if the  s use separate buffers. ghc-lib-parserCheck whether a   is empty (analogous to ). ghc-lib-parser Computes a   which points to the first character of the wanted line. Lines begin at 1. ghc-lib-parserDecode the first n bytes of a   as UTF-8 into a . Similar to , if the character cannot be decoded as UTF-8, they will be replaced with '\0'. ghc-lib-parserReturn the previous n* characters (or fewer if we are less than n characters into the buffer. ghc-lib-parsern, the number of bytes ghc-lib-parsern, the number of bytes ghc-lib-parsern, the number of bytes  gNoneI ghc-lib-parserA non-deterministic set of FastStrings. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM for explanation why it's not deterministic and why it matters. Use DFastStringEnv if the set eventually gets converted into a list or folded over in a way where the order changes the generated code.  )None 3R ghc-lib-parserOccurrence NameIn this context that means: "classified (i.e. as a type name, value name, etc) but not qualified and not yet resolved" ghc-lib-parserOther names in the compiler add additional information to an OccName. This class provides a consistent way to access the underlying OccName. !ghc-lib-parserValue OccNamess are those that are either in the variable or data constructor namespaces!ghc-lib-parser Test if the 8 is a data constructor that starts with a symbol (e.g. :, or [])!ghc-lib-parser Test if the  is that for any operator (whether it is a data constructor or variable or whatever)!ghc-lib-parserWrap parens around an operator!ghc-lib-parserHaskell 98 encourages compilers to suppress warnings about unused names in a pattern if they start with _: this implements that test!ghc-lib-parserTest for definitions internally generated by GHC. This predicate is used to suppress printing of internal definitions in some debug prints!ghc-lib-parserIs an  one of a Typeable TyCon or Module binding? This is needed as these bindings are renamed differently. See Note [Grand plan for Typeable] in GHC.Tc.Instance.Typeable.!ghc-lib-parseraghc-lib-parserA unique, unambiguous name for something, containing information about where that thing originated.!ghc-lib-parser*A class allowing convenient access to the  of various datatypes!ghc-lib-parser!BuiltInSyntax is for things like (:), [] and tuples, which have special syntactic forms. They aren't in scope as such.!ghc-lib-parser Will the ( come from a dynamically linked package?!ghc-lib-parserReturns True if the name is (a) Internal (b) External but from the specified module (c) External but from the  interactive packageThe key idea is that False means: the entity is defined in some other module you can find the details (type, fixity, instances) in some interface file those details will be stored in the EPT or HPTTrue means: the entity is defined in this module or earlier in the GHCi session you can find details (type, fixity, instances) in the TcGblEnv or TcLclEnvThe isInteractiveModule part is because successive interactions of a GHCi session each give rise to a fresh module (Ghci1, Ghci2, etc), but they all come from the magic  interactive package; and all the details are kept in the TcLclEnv, TcGblEnv, NOT in the HPT or EPT. See Note [The interactive package] in GHC.Driver.Types!ghc-lib-parserReturns True if the Name comes from some other package: neither this package nor the interactive package.!ghc-lib-parserCreate a name which is (for now at least) local to the current module and hence does not need a   to disambiguate it from other s!ghc-lib-parser=Create a name which definitely originates in the given module!ghc-lib-parser>Create a name which is actually defined by the compiler itself!ghc-lib-parser0Create a name brought into being by the compiler!ghc-lib-parserMake a name for a foreign call!ghc-lib-parser Make the ? into an internal name, regardless of what it was to begin with!ghc-lib-parserCompare Names lexicographically This only works for Names that originate in the source code or have been tidied.!ghc-lib-parser0Print the string of Name unqualifiedly directly.!ghc-lib-parser!Get a string representation of a  that's unique and stable across recompilations. Used for deterministic generation of binds for derived instances. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal$String""ghc-lib-parserAssumes that the  is a non-binding one. See  and  for serializing binding s. See ) for the rationale for this distinction."ghc-lib-parserCaution#: This instance is implemented via , which means that the ordering is not stable across deserialization or rebuilds.See  for further information, and trac #15240 for a bug caused by improper use of this instance."ghc-lib-parserThe same comments as for 's . instance apply. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hNonei "ghc-lib-parserIds which have no CAF references. This is a result of analysis of C--. It is always safe to use an empty ". TODO Refer to Note."ghc-lib-parser A number of "s in dependency order: earlier " scope over later " In a single (def, use) pair, the defs also scope over the uses"ghc-lib-parser(Just ds, us) => The use of any member of the ds, implies that all the us+ are used too. Also, us may mention ds. Nothing => Nothing is defined in this group, but nevertheless all the uses are essential. Used for instance declarations, for example"ghc-lib-parser&A set of names that are used somewhere"ghc-lib-parser)A set of names that are defined somewhere"ghc-lib-parser,True if there is a non-empty intersection. s1 " s2 doesn't compute s2 if s1 is empty"ghc-lib-parserGet the elements of a NameSet with some stable ordering. This only works for Names that originate in the source code or have been tidied. See Note [Deterministic UniqFM] to learn about nondeterminism"ghc-lib-parser Just like ", but " are not eliminated from the " returned"ghc-lib-parser Collect all ">, regardless of whether the group is itself used, but remove " on the way"ghc-lib-parser Given some " and some ", find all the uses, transitively. The result is a superset of the input ",; and includes things defined in the input " (but only if they are used)-"""""""""""""""""""""""""""""""""""""""""""""-"""""""""""""""""""""""""""""""""""""""""""""iNonek"ghc-lib-parserDeterministic Name Environment#See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM' for explanation why we need DNameEnv."ghc-lib-parserName Environment$""""""""""""""""""""""""""""""""""""$""""""""""""""""""""""""""""""""""""jNone5q"ghc-lib-parserA collection of annotations"ghc-lib-parserThe kind of annotation target found in the middle end of the compiler"ghc-lib-parserAn annotation target"ghc-lib-parserWe are annotating something with a name: a type or identifier"ghc-lib-parser%We are annotating a particular module"ghc-lib-parserRepresents an annotation after it has been sufficiently desugared from it's initial form of "ghc-lib-parserThe target of the annotation"ghc-lib-parser An empty annotation environment."ghc-lib-parserConstruct a new annotation environment that contains the list of annotations provided."ghc-lib-parser,Add the given annotation to the environment."ghc-lib-parser"Union two annotation environments."ghc-lib-parser5Find the annotations attached to the given target as Ï values of your choice. If no deserializer is specified, only transient annotations will be returned."ghc-lib-parser5Find the annotations attached to the given target as Ï values of your choice. If no deserializer is specified, only transient annotations will be returned."ghc-lib-parserDeserialize all annotations of a given type. This happens lazily, that is no deserialization will take place until the [a] is actually demanded and the [a] can also be empty (the UniqFM is not filtered)."ghc-lib-parserThe "payload" of an annotation allows recovery of its value at a given type, and can be persisted to an interface file""""""""""""""""""""""""""""""""""kNoner"ghc-lib-parserUsed when we want to fingerprint a structure without depending on the fingerprints of external Names that it refers to.""""""lNone3v"ghc-lib-parser>Docs for arguments. E.g. function arguments, method arguments."ghc-lib-parserDocs for declarations: functions, data types, instances, methods etc."ghc-lib-parser$Located Haskell Documentation String"ghc-lib-parserHaskell Documentation String"Internally this is a UTF8-Encoded .#ghc-lib-parser Create a " from a UTF8-encoded .#ghc-lib-parserReturn the contents of a " as a UTF8-encoded .#ghc-lib-parserJoin two docstrings.Non-empty docstrings are joined with two newlines in between, resulting in separate paragraphs.#ghc-lib-parser/Concat docstrings with two newlines in between.Empty docstrings are skipped.If all inputs are empty, H is returned.""""""""########"""#"#####""#""#*None 3>?.ghc-lib-parserType or kind Variableghc-lib-parserVariableEssentially a typed ?, that may also contain some additional information about the  and its use sites.ghc-lib-parserThe non-dependent version of . See Note [AnonArgFlag] Appears here partly so that it's together with its friends ArgFlag and ForallVisFlag, but also because it is used in IfaceType, rather early in the compilation chainghc-lib-parser Argument Flag3Is something required to appear in source Haskell (#), permitted by request (#) (visible type application), or prohibited entirely from appearing in source Haskell (#)? See Note [VarBndrs, TyCoVarBinders, TyConBinders, and visibility] in GHC.Core.TyCo.Rep#ghc-lib-parserVariable BinderA # is the binder of a ForAllTy It's convenient to define this synonym here rather its natural home in GHC.Core.TyCo.Rep/, because it's used in GHC.Core.DataCon.hs-bootA # is a binder with only TyVar#ghc-lib-parser Used for (->): an ordinary non-dependent arrow. The argument is visible in source code.#ghc-lib-parser Used for (=>): a non-dependent predicate arrow. The argument is invisible in source code.#ghc-lib-parser Whether an #' argument may appear in source Haskell.#ghc-lib-parserthe argument may not appear in source Haskell, it is only inferred.#ghc-lib-parser?the argument may appear in source Haskell, but isn't required.#ghc-lib-parserThe type or kind of the  in question#ghc-lib-parserType or Coercion Variable#ghc-lib-parserEquality Variable#ghc-lib-parserImplicit parameter Identifier#ghc-lib-parserDictionary Identifier#ghc-lib-parserDictionary Function Identifier#ghc-lib-parserEvidence Variable#ghc-lib-parserEvidence Identifier#ghc-lib-parser Kind Variable#ghc-lib-parser Type Variable#ghc-lib-parser*Type variable that might be a metavariable#ghc-lib-parserType or Kind Variable#ghc-lib-parser#ghc-lib-parserCoercion Variable#ghc-lib-parser Identifier#ghc-lib-parserCompare Vars by their Uniques. This is what Ord Var does, provided here to make it explicit at the call-site that it can introduce non-determinism. See Note [Unique Determinism]$ghc-lib-parser Update a s type. Does not update the  multiplicity stored in an #, if any. Because of the possibility for abuse, ASSERTs that there is no multiplicity to update.$ghc-lib-parser Update a (s type monadically. Does not update the  multiplicity stored in an #, if any. Because of the possibility for abuse, ASSERTs that there is no multiplicity to update.$ghc-lib-parser Does this 1 classify an argument that is written in Haskell?$ghc-lib-parser Does this 5 classify an argument that is not written in Haskell?$ghc-lib-parser.Do these denote the same level of visibility? # arguments are visible, others are not. So this function equates # and #. Used for printing.$ghc-lib-parserMake a named binder$ghc-lib-parserMake a named binder var should be a type variable$ghc-lib-parserMake many named binders$ghc-lib-parser $ v == not ($ v).$ghc-lib-parserIs this a term variable (# ) that is not! a coercion variable? Satisfies $ v ==> $ v == not ($ v).$ghc-lib-parser$ returns True% for type variables as well as local #s These are the variables that we need to pay attention to when finding free variables, or doing dependency analysis.$ghc-lib-parser$ returns True of #s and s that must have a binding in this module. The converse is not quite right: there are some global #s that must have bindings, such as record selectors. But that doesn't matter, because it's only used for assertions$ghc-lib-parserisExportedIdVar means "don't throw this away"##########################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$########################$##$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$######$$$###########$$$$$$$$$$$$$$$$$$$$$$$$$#oNoned$ghc-lib-parser+Deterministic Type or Coercion Variable Set$ghc-lib-parserDeterministic Type Variable Set$ghc-lib-parserDeterministic Identifier Set$ghc-lib-parserDeterministic Variable Set$ghc-lib-parserType or Coercion Variable Set$ghc-lib-parserCoercion Variable Set$ghc-lib-parserType Variable Set$ghc-lib-parserIdentifier Set$ghc-lib-parser A non-deterministic Variable SetA non-deterministic set of variables. See Note [Deterministic UniqFM] in GHC.Types.Unique.DFM for explanation why it's not deterministic and why it matters. Use DVarSet if the set eventually gets converted into a list or folded over in a way where the order changes the generated code, for example when abstracting variables.$ghc-lib-parser5map the function over the list, and union the results%ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.%ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetEltsUFM. Passing a list to the pretty-printing function allows the caller to decide on the order of Vars (eg. toposort them) without them having to use nonDetEltsUFM at the call site. This prevents from let-binding non-deterministically ordered lists and reusing them where determinism matters.%ghc-lib-parser5Map the function over the list, and union the results%ghc-lib-parserTrue if empty intersection%ghc-lib-parserTrue if non-empty intersection%ghc-lib-parser2Partition DVarSet according to the predicate given%ghc-lib-parser'Delete a list of variables from DVarSet%ghc-lib-parser"Add a list of variables to DVarSet%ghc-lib-parserConvert a DVarSet to a VarSet by forgetting the order of insertion%ghc-lib-parsertransCloVarSet for DVarSet%ghc-lib-parserThe things to be pretty printedghc-lib-parser4The pretty printing function to use on the elementsghc-lib-parser + where the things have been pretty printed$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%pNoneA %ghc-lib-parser.Predicate on possible free variables: returns True! iff the variable is interesting%ghc-lib-parserRun a free variable computation, returning a list of distinct free variables in deterministic order.%ghc-lib-parserRun a free variable computation, returning a deterministic set of free variables. Note that this is just a wrapper around the version that returns a deterministic list. If you need a list you should use %.%ghc-lib-parserRun a free variable computation, returning a non-deterministic set of free variables. Don't use if the set will be later converted to a list and the order of that list will impact the generated code.%ghc-lib-parserAdd a variable - when free, to the returned free variables. Ignores duplicates and respects the filtering function.%ghc-lib-parserReturn no free variables.%ghc-lib-parser%Union two free variable computations.%ghc-lib-parser5Mark the variable as not free by putting it in scope.%ghc-lib-parser%Mark many free variables as not free.%ghc-lib-parser#Filter a free variable computation.%ghc-lib-parserMap a free variable computation over a list and union the results.%ghc-lib-parser&Union many free variable computations.%ghc-lib-parserAdd multiple variables - when free, to the returned free variables. Ignores duplicates and respects the filtering function.%%%%%%%%%%%%%%%%%%%%%%%%%%%%qNoneW %ghc-lib-parser'Deterministic Type Variable Environment%ghc-lib-parserDeterministic Identifier Environment Sadly not always indexed by Id, but it is in the common case.%ghc-lib-parser"Deterministic Variable Environment%ghc-lib-parserCoercion Variable Environment%ghc-lib-parser%Type or Coercion Variable Environment%ghc-lib-parserType Variable Environment%ghc-lib-parserIdentifier Environment%ghc-lib-parserVariable Environment%ghc-lib-parserTidy EnvironmentWhen tidying up print names, we keep a mapping of in-scope occ-names (the  +) and a Var-to-Var of the current renamings%ghc-lib-parserRename Environment 2When we are comparing (or matching) types or terms, we are faced with "going under" corresponding binders. E.g. when comparing: \x. e1 ~ \y. e2Basically we want to rename [x -> y] or [y -> x], but there are lots of things we must be careful of. In particular, x might be free in e2 , or y in e1. So the idea is that we come up with a fresh binder that is free in neither, and rename x and y, respectively. That means we must maintain: 'A renaming for the left-hand expression)A renaming for the right-hand expressionsAn in-scope setFurthermore, when matching, we want to be able to have an 'occurs check', to prevent: \x. f ~ \y. ymatching with [f -> y]. So for each expression we want to know that set of locally-bound variables. That is precisely the domain of the mappings 1. and 2., but we must ensure that we always extend the mappings as we go in.-All of this information is bundled up in the %%ghc-lib-parserA set of variables that are in scope at some point "Secrets of the Glasgow Haskell Compiler inliner" Section 3.2 provides the motivation for this abstraction.%ghc-lib-parserLook up a variable the %. This lets you map from the variable's identity (unique) to its full value.%ghc-lib-parseruniqAway in_scope v finds a unique that is not used in the in-scope set, and gives that to v. See Note [Local uniques].%ghc-lib-parserunsafeGetFreshUnique in_scope3 finds a unique that is not in-scope in the given %. This must be used very carefully since one can very easily introduce non-unique %s this way. See Note [Local uniques].%ghc-lib-parserRetrieve the left mapping%ghc-lib-parserRetrieve the right mapping%ghc-lib-parserApplies % to several variables: the two variable lists must be of equal length%ghc-lib-parserrnBndr2 env bL bR goes under a binder bL5 in the Left term, and binder bR, in the Right term. It finds a new binder, new_b&, and returns an environment mapping  bL -> new_b and  bR -> new_b%ghc-lib-parser Similar to %= but returns the new variable as well as the new environment%ghc-lib-parser Similar to %7 but used when there's a binder on the left side only.%ghc-lib-parser Similar to %8 but used when there's a binder on the right side only.%ghc-lib-parser Similar to %5 but used for eta expansion See Note [Eta expansion]%ghc-lib-parser Similar to %5 but used for eta expansion See Note [Eta expansion]%ghc-lib-parser?Look up the renaming of an occurrence in the left or right term%ghc-lib-parser?Look up the renaming of an occurrence in the left or right term%ghc-lib-parser?Look up the renaming of an occurrence in the left or right term%ghc-lib-parser?Look up the renaming of an occurrence in the left or right term%ghc-lib-parser)Tells whether a variable is locally bound%ghc-lib-parser)Tells whether a variable is locally bound%ghc-lib-parser$Wipe the left or right side renaming%ghc-lib-parser$Wipe the left or right side renaming%ghc-lib-parser"swap the meaning of left and right%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%&%%&&&%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sNone&ghc-lib-parserInformation about an associated type family default implementation. This is used solely for validity checking. See (Note [Type-checking default assoc decls] in  GHC.Tc.TyCl."&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&tNone23567b&ghc-lib-parser"Fields in an algebraic record type&ghc-lib-parserUser-visible label of the field&ghc-lib-parserWas DuplicateRecordFields on in the defining module for this datatype?&ghc-lib-parserRecord selector function&ghc-lib-parser2A map from labels to all the auxiliary information&ghc-lib-parserField labels are just represented as strings; they are not necessarily unique (even within a module)&ghc-lib-parserRecord selector OccNames are built from the underlying field name and the name of the first data constructor of the type, to support duplicate record field names. See Note [Why selector names include data constructors]. &&&&&&&&& &&&&&&&&&uNone3&ghc-lib-parserA collection of && - several things that are "available"&ghc-lib-parser2Records what things are "available", i.e. in scope&ghc-lib-parserAn ordinary identifier in scope&ghc-lib-parserA type or class in scopeThe AvailTC Invariant=: If the type or class is itself to be in scope, it must be first in this list. Thus, typically: AvailTC Eq [Eq, ==, \/=] []&ghc-lib-parserCompare lexicographically&ghc-lib-parserJust the main name made available, i.e. not the available pieces of type or class brought into scope by the  GenAvailInfo&ghc-lib-parserAll names made available by the availability information (excluding overloaded selectors)&ghc-lib-parserAll names made available by the availability information (including overloaded selectors)&ghc-lib-parserNames for non-fields made available by the availability information&ghc-lib-parser5Fields made available by the availability information&ghc-lib-parsers made available by the availability information, paired with the  used to refer to each one.When DuplicateRecordFields is in use, the 5 may be the mangled name of a record selector (e.g.  $sel:foo:MkT ) while the & will be the label of the field (e.g. foo).,See Note [Representing fields in AvailInfo].&ghc-lib-parser trims an & to keep only a single name&ghc-lib-parserfilters &s by the given predicate&ghc-lib-parser filters an & by the given predicate&ghc-lib-parser Combines &s from the same family avails may have several items with the same availName E.g import Ix( Ix(..), index ) will give Ix(Ix,index,range) and Ix(index) We want to combine these; addAvail does that&ghc-lib-parser/Used when deciding if the interface has changed&ghc-lib-parserThe name of the type or classghc-lib-parserThe available pieces of type or class, excluding field selectors.ghc-lib-parserThe record fields of the type (see Note [Representing fields in AvailInfo]).&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&vNone3$&ghc-lib-parserImport Item Specification'Describes import info a particular Name&ghc-lib-parser4The import had no import list, or had a hiding list&ghc-lib-parser$The import had an import list. The & field is True iff the thing was named  explicitly in the import specs rather than being imported as part of a "..." group. Consider: import C( T(..) )Here the constructors of T! are not named explicitly; only T is named explicitly.&ghc-lib-parser Import Declaration SpecificationDescribes a particular import declaration and is shared among all the  Provenances for that decl&ghc-lib-parserModule imported, e.g.  import Muggle Note the Muggle5 may well not be the defining module for this thing!&ghc-lib-parserImport alias, e.g. from as M (or Muggle if there is no as clause)&ghc-lib-parserWas this import qualified?&ghc-lib-parser-The location of the entire import declaration&ghc-lib-parserImport SpecificationThe & of something says how it came to be imported It's quite elaborate so that we can give accurate unused-name warnings.'ghc-lib-parserThe children of a Name are the things that are abbreviated by the ".." notation in export lists. See Note [Parents]'ghc-lib-parser$See Note [Parents for record fields]'ghc-lib-parserGlobal Reader ElementAn element of the ''ghc-lib-parserTrue  = the thing was defined locally'ghc-lib-parserIn scope through these imports'ghc-lib-parserGlobal Reader Environment Keyed by 3; when looking up a qualified name we look up the  part, and then check the  Provenance to see if the appropriate qualification is valid. This saves routinely doubling the size of the env by adding both qualified and unqualified names to the domain.The list in the codomain is required because there may be name clashes These only get reported on lookup, not on constructionINVARIANT 1: All the members of the list have distinct '$ fields; that is, no duplicate NamesINVARIANT 2: Imported provenance => Name is an ExternalName However LocalDefs can have an InternalName. This happens only when type-checking a [d| ... |] Template Haskell quotation; see this note in GHC.Rename.Names Note [Top-level Names in Template Haskell decl quotes]INVARIANT 3: If the GlobalRdrEnv maps [occ -> gre], then greOccName gre = occNB: greOccName gre is usually the same as nameOccName (gre_name gre), but not always in the case of record selectors; see greOccName'ghc-lib-parserLocal Reader Environment3This environment is used to store local bindings (let, where , lambda, case). It is keyed by OccName, because we never use it for qualified names We keep the current mapping, *and* the set of all Names in scope Reason: see Note [Splicing Exact names] in GHC.Rename.Env'ghc-lib-parser Reader NameDo not use the data constructors of RdrName directly: prefer the family of functions that creates them, such as 'Note: A Located RdrName will only have API Annotations if it is a compound one, e.g.  `bar` ( ~ )w : w , w '(' or '[' or '[:' , w ')' or ']' or ':]',, w '`' , w w,'ghc-lib-parserUnqualified name1Used for ordinary, unqualified occurrences, e.g. x, y or Foo. Create such a ' with ''ghc-lib-parserQualified name)A qualified name written by the user in source code. The module isn't necessarily the module where the thing is defined; just the one from which it is imported. Examples are Bar.x, Bar.y or Bar.Foo. Create such a ' with ''ghc-lib-parser Original name$An original name; the module is the defining module. This is used when GHC generates code that will be fed into the renamer (e.g. from deriving clauses), but where we want to say "Use Prelude.map dammit". One of these can be created with ''ghc-lib-parser Exact nameWe know exactly the . This is used: ,When the parser parses built-in syntax like [] and (,), but wants a ' from it8By Template Haskell, when TH has generated a unique nameSuch a ' can be created by using ' on a 'ghc-lib-parserMake a qualified '& in the given namespace and where the  and the  are taken from the first and second elements of the tuple respectively'ghc-lib-parsermake a ' where all the elements point to the same Provenance (useful for "hiding" imports, or imports with no details).'ghc-lib-parserTakes a list of distinct GREs and folds them into AvailInfos. This is more efficient than mapping each individual GRE to an AvailInfo and the folding using && but needs the uniqueness assumption.'ghc-lib-parserLook for precisely this  in the environment. This tests whether it is in scope, ignoring anything else that might be in scope with the same .'ghc-lib-parserLook for a particular record field selector in the environment, where the selector name and field label may be different: the GlobalRdrEnv is keyed on the label. See Note [Parents for record fields] for why this happens.'ghc-lib-parserLook for precisely this ! in the environment, but with an % that might differ from that of the . See '' and Note [Parents for record fields].'ghc-lib-parserIs this a record field defined with DuplicateRecordFields? (See Note [Parents for record fields])'ghc-lib-parser>Test if an unqualified version of this thing would be in scope'ghc-lib-parser2Takes a list of GREs which have the right OccName x: Pick those GREs that are in scope * Qualified, as 4 if want_qual is Qual M _ * Unqualified, as x if want_unqual is Unqual _Return each such GRE, with its ImportSpecs filtered, to reflect how it is in scope qualified or unqualified respectively. See Note [GRE filtering]'ghc-lib-parserPick GREs that are in scope *both* qualified *and* unqualified Return each GRE that is, as a pair (qual_gre, unqual_gre) These two GREs are the original GRE with imports filtered to express how it is in scope qualified an unqualified respectively9Used only for the 'module M' item in export list; see 'ghc-lib-parser>Apply a transformation function to the GREs for these OccNames'ghc-lib-parserIs in scope unqualified?'ghc-lib-parser,Is in scope qualified with the given module?'ghc-lib-parserPrint out one place where the name was define/imported (With -dppr-debug, print them all)'ghc-lib-parser$Display info about the treatment of  under NoStarIsType.%With StarIsType, three properties of  hold:(a) it is not an infix operator (b) it is always in scope (c) it is a synonym for Data.Kind.TypeHowever, the user might not know that he's working on a module with NoStarIsType and write code that still assumes (a), (b), and (c), which actually do not hold in that module.Violation of (a) shows up in the parser. For instance, in the following examples, we have ! not applied to enough arguments:data A :: * data F :: * -> *Violation of (b) or (c) show up in the renamer and the typechecker respectively. For instance:type K = Either * BoolThis will parse differently depending on whether StarIsType is enabled, but it will parse nonetheless. With NoStarIsType it is parsed as a type operator, thus we have ((*) Either Bool). Now there are two cases to consider: There is no definition of (*) in scope. In this case the renamer will fail to look it up. This is a violation of assumption (b).There is a definition of the (*) type operator in scope (for example coming from GHC.TypeNats). In this case the user will get a kind mismatch error. This is a violation of assumption (c).The user might unknowingly be working on a module with NoStarIsType or use  as  out of habit. So it is important to give a hint whenever an assumption about  is violated. Unfortunately, it is somewhat difficult to deal with (c), so we limit ourselves to (a) and (b).' generates an appropriate hint to the user depending on the extensions enabled in the module and the name that triggered the error. That is, if we have NoStarIsType and the error is related to  or its Unicode variant, the resulting SDoc will contain a helpful suggestion. Otherwise it is empty.&&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&'''''wNone3'ghc-lib-parser'(ghc-lib-parser'=>', unicode variant(ghc-lib-parser'::'(ghc-lib-parser'::', unicode variant(ghc-lib-parser(ghc-lib-parser'..'(ghc-lib-parserUnicode variant(ghc-lib-parserfor function name in matches where there are multiple equations for the function.(ghc-lib-parser for CType(ghc-lib-parser'infix' or 'infixl' or 'infixr'(ghc-lib-parser'<-'(ghc-lib-parser'<-', unicode variant(ghc-lib-parserThe E unicode arrow(ghc-lib-parser (ghc-lib-parser'%1' -- for HsLinearArrow(ghc-lib-parser;where a name loses its location in the AST, this carries it(ghc-lib-parser'(#' or '{-# LANGUAGE' etc(ghc-lib-parser'(|'(ghc-lib-parser'(|', unicode variant(ghc-lib-parser'{'(ghc-lib-parser'[e|' or '[e||'(ghc-lib-parser'[|'(ghc-lib-parser'[|', unicode variant(ghc-lib-parser'('(ghc-lib-parser'['(ghc-lib-parserprefix   -- TemplateHaskell(ghc-lib-parserprefix  -- TemplateHaskell(ghc-lib-parser% -- for HsExplicitMult(ghc-lib-parser->(ghc-lib-parser->, unicode variant(ghc-lib-parser';'(ghc-lib-parser'''(ghc-lib-parserstatic(ghc-lib-parser double '''(ghc-lib-parser'~'(ghc-lib-parser() for types(ghc-lib-parser e.g. INTEGER(ghc-lib-parser*String value, will need quotes when output(ghc-lib-parser'|'(ghc-lib-parservia(ghc-lib-parser-<(ghc-lib-parser-<, unicode variant(ghc-lib-parser->(ghc-lib-parser->, unicode variant(ghc-lib-parser-<<(ghc-lib-parser-<<, unicode variant(ghc-lib-parser>>-(ghc-lib-parser>>-, unicode variant(ghc-lib-parserEncapsulated call to addAnnotation, requiring only the SrcSpan of the AST construct the annotation belongs to; together with the AnnKeywordId, this is the key of the annotation map.This type is useful for places in the parser where it is not yet known what SrcSpan an annotation should be added to. The most common situation is when we are parsing a list: the annotations need to be associated with the AST element that *contains* the list, not the list itself. ( lets us defer adding the annotations until we finish parsing the list and are now parsing the enclosing element; we then apply the ( to associate the annotations. Another common situation is where a common fragment of the AST has been factored out but there is no separate AST node for this fragment (this occurs in class and data declarations). In this case, the annotation belongs to the parent data declaration.The usual way an ( is created is using the mj ("make jump") function, and then it can be discharged using the ams function.(ghc-lib-parserGiven a  that surrounds a HsPar or HsParTy , generate ( values for the opening and closing bordering on the start and end of the span(ghc-lib-parserRetrieve a list of annotation s based on the  of the annotated AST element, and the known type of the annotation.(ghc-lib-parserRetrieve a list of annotation s based on the  of the annotated AST element, and the known type of the annotation. The list is removed from the annotations.(ghc-lib-parser/Retrieve the comments allocated to the current Note: A given < may appear in multiple AST elements, beware of duplicates(ghc-lib-parser/Retrieve the comments allocated to the current ', and remove them from the annotations(ghc-lib-parser;Convert a normal annotation into its unicode equivalent one''''''''''''''''((((((((('''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('((((((((('''((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('''''''''''(''''xNone'(-/23>? )ghc-lib-parser1Constraint type to bundle up the requirement for   on both the id and the + of it. See Note [NoGhcTc].+ghc-lib-parserMarks that a field uses the GhcRn variant even when the pass parameter is GhcTc. Useful for storing HsTypes in GHC.Hs.Exprs, say, because HsType GhcTc should never occur. See Note [NoGhcTc]+ghc-lib-parser.Maps the "normal" id type for a given GHC pass+ghc-lib-parser*Maps the "normal" id type for a given pass+ghc-lib-parserAllows us to check what phase we're in at GHC's runtime. For example, this class allows us to write > f :: forall p. IsPass p => HsExpr (GhcPass p) -> blah > f e = case ghcPass @p of > GhcPs -> ... in this RHS we have HsExpr GhcPs... > GhcRn -> ... in this RHS we have HsExpr GhcRn... > GhcTc -> ... in this RHS we have HsExpr GhcTc... which is very useful, for example, when pretty-printing. See Note [IsPass].+ghc-lib-parserUsed as a data type index for the hsSyn AST; also serves as a singleton type for Pass+ghc-lib-parserGHC's L prefixed variants wrap their vanilla variant in this type family, to add SrcLoc info via . Other passes than + not interested in location information can define this instance as f p.+ghc-lib-parserUsed in TTG extension constructors that have yet to be extended with anything. If an extension constructor has + as its field, it is not intended to ever be constructed anywhere, and any function that consumes the extension constructor can eliminate it by way of +.!This should not be confused with +', which are found in unused extension points (not  constructors!) and therefore can be inhabited.+ghc-lib-parserA placeholder type for TTG extension points that are not currently unused to represent any particular value.!This should not be confused with +', which are found in unused extension  constructors8 and therefore should never be inhabited. In contrast, + is used in extension points (e.g., as the field of some constructor), so it must have an inhabitant to construct AST passes that manipulate fields with that extension point as their type.+ghc-lib-parser=Used when constructing a term with an unused extension point.+ghc-lib-parser Eliminate a + . Much like .))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))+++{None 23>?!+ghc-lib-parserImported or Exported Wildcard+ghc-lib-parserImported or exported entity.+ghc-lib-parserImported or Exported Variable+ghc-lib-parser+Imported or exported Thing with Absent list+The thing is a Class/Type (can't tell) - ws : w, w,w+ghc-lib-parser8Imported or exported Thing with All imported or exportedThe thing is a Class"Type and the All refers to methods constructorsws : w , w,w#, w+ghc-lib-parser:Imported or exported Thing With given imported or exportedThe thing is a Class/Type and the imported or exported things are methods/constructors and record fields; see Note [IEThingWith] - ws : w%, w%, w%, w+ghc-lib-parser$Imported or exported module contents (Export Only)ws : w+ghc-lib-parserDoc section heading+ghc-lib-parserSome documentation+ghc-lib-parserReference to named doc+ghc-lib-parserLocated Import or Export+ghc-lib-parser(Located name with possible adornment - ws : w , w+ghc-lib-parserA name in an import or export specification which may have adornments. Used primarily for accurate pretty printing of ParsedSource, and API Annotation placement.+ghc-lib-parserno extra+ghc-lib-parser pattern X+ghc-lib-parser type (:+:)+ghc-lib-parserImport DeclarationA single Haskell import declaration.+ghc-lib-parserwsww, w for ideclSourcew,w, w,w, ww,w, w) attached to location in ideclHiding+ghc-lib-parser Module name.+ghc-lib-parserPackage qualifier.+ghc-lib-parserIsBoot  = {-# SOURCE #-} import+ghc-lib-parserTrue => safe import+ghc-lib-parserIf/how the import is qualified.+ghc-lib-parser$True => implicit import (of Prelude)+ghc-lib-parser as Module+ghc-lib-parser(True => hiding, names)+ghc-lib-parserIf/how an import is  qualified.+ghc-lib-parser qualified! appears in prepositive position.,ghc-lib-parser qualified" appears in postpositive position.,ghc-lib-parserNot qualified.,ghc-lib-parserLocated Import Declaration,ghc-lib-parserGiven two possible located  qualified tokens, compute a style (in a conforming Haskell program only one of the two can be not H). This is called from  GHC.Parser.,ghc-lib-parserConvenience function to answer the question if an import decl. is qualified.+ghc-lib-parserWhen in a list this may havew : w,ghc-lib-parserWhen in a list this may havew : w0+++++++++++++++++++++++++++++++++,,+,,,,,,,,,,,,0,+,,+,,+++++++++++++,+++++++++++++++++++,,,,,,,,None3,ghc-lib-parser9An index into a given cost centre module,name,flavour set,ghc-lib-parser2Per-module state for tracking cost centre indices.See documentation of  for more details.,ghc-lib-parserInitialize cost centre state.,ghc-lib-parser-Get a new index for a given cost centre name.,,,,,,,,,,None3U ,ghc-lib-parserA Cost Centre Stack is something that can be attached to a closure. This is either:$the current cost centre stack (CCCS)a pre-defined cost centre stack (there are several pre-defined CCSs, see below).,ghc-lib-parserThe flavour of a cost centre.Index fields represent 0-based indices giving source-code ordering of centres with the same module, name, and flavour.,ghc-lib-parserAuto-generated top-level thunk,ghc-lib-parserExplicitly annotated expression,ghc-lib-parser Explicitly annotated declaration,ghc-lib-parserGenerated by HPC for coverage,ghc-lib-parserA Cost Centre is a single {- SCC -} annotation.,ghc-lib-parserTwo cost centres may have the same name and module but different SrcSpans, so we need a way to distinguish them easily and give them different object-code labels. So every CostCentre has an associated flavour that indicates how it was generated, and flavours that allow multiple instances of the same name and module have a deterministic 0-based index.,ghc-lib-parserName of the cost centre itself,ghc-lib-parser Name of module defining this CC.,ghc-lib-parser.Is this a cost-centre which records scc counts,ghc-lib-parser)Is this a cost-centre which can be sccd ?,ghc-lib-parserPrint a flavour in Core#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,None '(/23?,ghc-lib-parser,For now, we work only with nominal equality.,ghc-lib-parsercoaxrProves returns Nothing when it doesn't like the supplied arguments. When this happens in a coercion that means that the coercion is ill-formed, and Core Lint checks for that.,ghc-lib-parser-A more explicit representation for `t1 ~ t2`.-ghc-lib-parserA -: is a "coercion constructor", i.e. a named equality axiom.-ghc-lib-parserThe  [CoAxBranch] passed into the mapping function is a list of all previous branches, reversed,,,,,,,,,,,,,,,,,,,,,,,-----------------------------------------------------------------,,,,,,,-----------------------,,,,-,,,,,,,,,,,,-Nonet--------------------------------................................................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666--------------------------------................................................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666 Safe-Inferred16ghc-lib-parserDefault maximum depth for both class instance search and type family reduction. See also #5395.6ghc-lib-parserDefault maximum constraint-solver iterations Typically there should be very few 6666666666 6666666666cNone>čghc-lib-parserTyCons represent type constructors. Type constructors are introduced by things such as:1) Data declarations: data Foo = ... creates the Foo type constructor of kind *2) Type synonyms: type Foo = ... creates the Foo type constructor 3) Newtypes: newtype Foo a = MkFoo ... creates the Foo type constructor of kind * -> *4) Class declarations: class Foo where creates the Foo type constructor of kind *This data type also encodes a number of primitive, built in type constructors such as those for function and tuple types.ghc-lib-parser Is this the  for an unboxed tuple?ghc-lib-parser Does this  represent a tuple?NB: when compiling  Data.Tuple, the tycons won't reply True to , because they are built as  AlgTyCons. However they get spat into the interface file as tuple tycons, so I don't think it matters.6ghc-lib-parserPaints a picture of what a  represents, in broad strokes. This is used towards more informative error messages.6ghc-lib-parser e.g., the (->) .6ghc-lib-parserA 6 is an abstraction of a type. It contains information that the code generator needs in order to pass arguments, return results, and store values of this type. See also Note [RuntimeRep and PrimRep] in GHC.Types.RepType and Note [VoidRep] in GHC.Types.RepType.6ghc-lib-parserUnlifted pointer6ghc-lib-parserSigned, 8-bit value6ghc-lib-parserSigned, 16-bit value6ghc-lib-parserSigned, 32-bit value6ghc-lib-parser-Signed, 64 bit value (with 32-bit words only)6ghc-lib-parserSigned, word-sized value6ghc-lib-parserUnsigned, 8 bit value6ghc-lib-parserUnsigned, 16 bit value6ghc-lib-parserUnsigned, 32 bit value6ghc-lib-parser/Unsigned, 64 bit value (with 32-bit words only)6ghc-lib-parserUnsigned, word-sized value6ghc-lib-parserA pointer, but not) to a Haskell value (use '(Un)liftedRep')6ghc-lib-parserA vector6ghc-lib-parser;Information pertaining to the expansion of a type synonym (type)6ghc-lib-parserRepresents an open type family without a fixed right hand side. Additional instances can appear at any time.7These are introduced by either a top level declaration: data family T a :: *Or an associated data type declaration, within a class declaration: !class C a b where data T b :: *6ghc-lib-parser"An open type synonym family e.g. type family F x y :: * -> *6ghc-lib-parser$A closed type synonym family e.g. &type family F x where { F Int = Bool }6ghc-lib-parserA closed type synonym family declared in an hs-boot file with type family F a where ..6ghc-lib-parser0Built-in type family used by the TypeNats solver6ghc-lib-parser+An ordinary type constructor has no parent.6ghc-lib-parserAn unboxed type constructor. The TyConRepName is a Maybe since we currently don't allow unboxed sums to be Typeable since there are too many of them. See #13276.6ghc-lib-parserType constructors representing a class dictionary. See Note [ATyCon for classes] in GHC.Core.TyCo.Rep6ghc-lib-parserType constructors representing an *instance* of a *data* family. Parameters:1) The type family in question*2) Instance types; free variables are the 7 of the current  (not the family one). INVARIANT: the number of types matches the arity of the family 3) A CoTyCon identifying the representation type with the type instance family6ghc-lib-parserSome promoted datacons signify extra info relevant to GHC. For example, the IntRep constructor of  RuntimeRep corresponds to the 6 constructor of 6. This data structure allows us to store this information right in the 6. The other approach would be to look up things like  RuntimeRep's PrimRep by known-key every time. See also Note [Getting from RuntimeRep to PrimRep] in GHC.Types.RepType6ghc-lib-parseran ordinary promoted data con6ghc-lib-parserA constructor of  RuntimeRep. The argument to the function should be the list of arguments to the promoted datacon.6ghc-lib-parserA constructor of VecCount6ghc-lib-parserA constructor of VecElem7ghc-lib-parserRepresents right-hand-sides of s for algebraic types7ghc-lib-parserSays that we know nothing about this data type, except that it's represented by a pointer. Used when we export a data type abstractly into an .hi file.7ghc-lib-parserInformation about those s derived from a data declaration. This includes data types with no constructors at all.7ghc-lib-parserAn unboxed sum type.7ghc-lib-parserInformation about those s derived from a newtype declaration7ghc-lib-parserThe data type constructors; can be empty if the user declares the type to have no constructors'INVARIANT: Kept in order of increasing ,/ tag (see the tag assignment in mkTyConTagMap)7ghc-lib-parserCached value: length data_cons7ghc-lib-parserCached value: is this an enumeration type? See Note [Enumeration types]7ghc-lib-parserThe unique constructor for the newtype. It has no existentials7ghc-lib-parser.Is this a boxed, unboxed or constraint tuple?7ghc-lib-parserCached value: the argument type of the constructor, which is just the representation type of the  (remember that newtypes do not exist at runtime so need a different representation type). The free s of this type are the 7 from the corresponding 7ghc-lib-parser Same as the 70, but this time eta-reduced. Hence the list of ?s in this field may be shorter than the declared arity of the .7ghc-lib-parserA Unique of this TyCon. Invariant: identical to Unique of Name stored in tyConName field.7ghc-lib-parserName of the constructor7ghc-lib-parser Full binders7ghc-lib-parser Result kind7ghc-lib-parserKind of this TyCon7ghc-lib-parserArity7ghc-lib-parser TyVar binders7ghc-lib-parserThe C type that should be used for this type when using the FFI and CAPI7ghc-lib-parser,Maps a label to information about the field7ghc-lib-parserName of result type variable, used for pretty-printing with --show-iface and for reifying TyCon in Template Haskell7ghc-lib-parserScoped tyvars over the tycon's body See Note [Scoped tyvars in a TcTyCon]7ghc-lib-parser$Is this TcTyCon already generalized?7ghc-lib-parserMake a Required TyConBinder. It chooses between NamedTCB and AnonTCB based on whether the tv is mentioned in the dependent set7ghc-lib-parserBoth type classes as well as family instances imply implicit type constructors. These implicit type constructors refer to their parent structure (ie, the class or family from which they derive) using a type of the following form.Extract those ,s that we are able to learn about. Note that visibility in this sense does not correspond to visibility in the context of any particular user program!7ghc-lib-parserMake a  for the Typeable* representation of the given wired-in type7ghc-lib-parserThe name (and defining module) for the Typeable representation (TyCon) of a type constructor.&See Note [Grand plan for Typeable] in GHC.Tc.Instance.Typeable.7ghc-lib-parserThe size of a 6 in bytes.This applies also when used in a constructor, where we allow packing the fields. For instance, in data Foo = Foo Float Float the two fields will take only 8 bytes, which for 64-bit arch will be equal to 1 word. See also mkVirtHeapOffsetsWithPadding for details of how data fields are laid out.7ghc-lib-parserReturn if Rep stands for floating type, returns Nothing for vector types.7ghc-lib-parser-The labels for the fields of this particular 7ghc-lib-parser(Look up a field label belonging to this 7ghc-lib-parserGiven the name of the function type constructor and it's kind, create the corresponding . It is recommended to use L if you want this functionality7ghc-lib-parser#This is the making of an algebraic . Notably, you have to pass in the generic (in the -XGenerics sense) information about the type constructor - you can get hold of it easily (see Generics module)7ghc-lib-parserSimpler specialization of 7 for classes7ghc-lib-parserMakes a tycon suitable for use during type-checking. It stores a variety of details about the definition of the TyCon, but no right-hand side. It lives only during the type-checking of a mutually-recursive group of tycons; it is then zonked to a proper TyCon in zonkTcTyCon. See also Note [Kind checking recursive type and class declarations] in  GHC.Tc.TyCl.7ghc-lib-parser5No scoped type variables (to be used with mkTcTyCon).7ghc-lib-parserCreate an unlifted primitive  , such as Int#.7ghc-lib-parserKind constructors7ghc-lib-parserCreate a lifted primitive  such as  RealWorld7ghc-lib-parserCreate a type synonym 7ghc-lib-parserCreate a type family 7ghc-lib-parser#Create a promoted data constructor  Somewhat dodgily, we give it the same Name as the data constructor itself; when we pretty-print the TyCon we add a quote; see the Outputable TyCon instance7ghc-lib-parser Test if the 8 is algebraic but abstract (invisible data constructors)7ghc-lib-parser Does this 7 represent something that cannot be defined in Haskell?7ghc-lib-parserIs this  unlifted (i.e. cannot contain bottom)? Note that this can only be true for primitive and unboxed-tuple s7ghc-lib-parserReturns True if the supplied  resulted from either a data or newtype declaration7ghc-lib-parserReturns True9 for vanilla AlgTyCons -- that is, those created with a data or newtype declaration.7ghc-lib-parserReturns True for the  of the  Constraint kind.7ghc-lib-parserReturns True for data types that are  definitely represented by heap-allocated constructors. These are scrutinised by Core-level case: expressions, and they get info tables allocated for them.-Generally, the function will be true for all data types and false for newtype1s, unboxed tuples, unboxed sums and type family &s. But it is not guaranteed to return True in all cases that it could.%NB: for a data type family, only the instance 2s get an info table. The family declaration  does not7ghc-lib-parser7 is true of s for which this property holds (where X is the role passed in): If (T a1 b1 c1) ~X (T a2 b2 c2), then (a1 ~X1 a2), (b1 ~X2 b2), and (c1 ~X3 c2) (where X1, X2, and X3, are the roles given by tyConRolesX tc X) See also Note [Decomposing equality] in GHC.Tc.Solver.Canonical7ghc-lib-parser7 is true of s for which this property holds (where X is the role passed in): If (T tys ~X t), then (t's head ~X T). See also Note [Decomposing equality] in GHC.Tc.Solver.Canonical7ghc-lib-parser Is this an 7 of a  that is generative and injective with respect to representational equality?7ghc-lib-parserIs this  that for a newtype7ghc-lib-parserTake a  apart into the s it scopes over, the  it expands into, and (possibly) a coercion from the representation type to the newtype . Returns Nothing if this is not possible.7ghc-lib-parser Is this a * representing a regular H98 type synonym (type)?7ghc-lib-parserTrue iff we can decompose (T a b c) into ((T a b) c) I.e. is it injective and generative w.r.t nominal equality? That is, if (T a b) ~N d e f, is it always the case that (T ~N d), (a ~N e) and (b ~N f)? Specifically NOT true of synonyms (open and otherwise)It'd be unusual to call mustBeSaturated on a regular H98 type synonym, because you should probably have expanded it first But regardless, it's not decomposable7ghc-lib-parserIs this an algebraic  declared with the GADT syntax?7ghc-lib-parserIs this an algebraic ( which is just an enumeration of values?7ghc-lib-parser Is this a ., synonym or otherwise, that defines a family?7ghc-lib-parser Is this a >, synonym or otherwise, that defines a family with instances?7ghc-lib-parserIs this a synonym 1 that can have may have further instances appear?7ghc-lib-parserIs this a synonym 1 that can have may have further instances appear?7ghc-lib-parser"Is this an open type family TyCon?7ghc-lib-parser0Is this a non-empty closed type family? Returns H( for abstract or empty closed families.7ghc-lib-parser7 tc returns 6 is is tc is an injective tycon (where is states for which 7 tc is injective), or 6 otherwise.7ghc-lib-parser%Is this TyCon for an associated type?7ghc-lib-parserGet the enclosing class TyCon (if there is one) for the given TyCon.7ghc-lib-parserGet the enclosing class TyCon (if there is one) for the given TyConFlavour7ghc-lib-parser Is this the  for a boxed tuple?7ghc-lib-parser Is this the  for an unboxed sum?7ghc-lib-parser Is this the  for a promoted tuple?7ghc-lib-parserIs this a PromotedDataCon?7ghc-lib-parser T a ...8ghc-lib-parser Extract the s bound by a vanilla type synonym and the corresponding (unsubstituted) right hand side.8ghc-lib-parserExtract the information pertaining to the right hand side of a type synonym (type) declaration.8ghc-lib-parserExtract the flavour of a type family (with all the extra information that it carries)8ghc-lib-parserIs this  that for a class instance?8ghc-lib-parserIf this  is that for a class instance, return the class it is for. Otherwise returns Nothing8ghc-lib-parser#Return the associated types of the , if any8ghc-lib-parserIs this ! that for a data family instance?8ghc-lib-parserIf this  is that of a data family instance, return the family in question and the instance types. Otherwise, return Nothing8ghc-lib-parserIf this - is that of a data family instance, return a  which represents a coercion identifying the representation type with the type instance family. Otherwise, return Nothing8ghc-lib-parser Extract any 6 from this TyCon8ghc-lib-parserIs this flavour of & an open type family or a data family?8ghc-lib-parser Initialise a 6 with 8.8ghc-lib-parser8The default upper bound (100) for the number of times a 6 is allowed to encounter each .8ghc-lib-parser1Change the upper bound for the number of times a 6 is allowed to encounter each .8ghc-lib-parserReturns whether or not this  is definite, or a hole that may be filled in at some later point. See Note [Skolem abstract data] 7ghc-lib-parserBinders of the ghc-lib-parser Result kindghc-lib-parserThe roles for each TyVarghc-lib-parser>The C type this type corresponds to when using the CAPI FFIghc-lib-parserStupid theta: see ďghc-lib-parser#Information about data constructorsghc-lib-parser0What flavour is it? (e.g. vanilla, type family)ghc-lib-parserWas the  declared with GADT syntax?7ghc-lib-parserResult kind of the ghc-lib-parserArity of the tuple ghc-lib-parser%Whether the tuple is boxed or unboxed7ghc-lib-parserKind of the resulting ghc-lib-parserArity of the sumghc-lib-parsers scoped over: see 77ghc-lib-parserresult kind onlyghc-lib-parserScoped type variables; see Note [How TcTyCons work] in GHC.Tc.TyClghc-lib-parser$Is this TcTyCon generalised already?ghc-lib-parser What sort of  this represents7ghc-lib-parserresult kind, never levity-polymorphic7ghc-lib-parserresult kind7ghc-lib-parserresult kind7ghc-lib-parserresult kind7ghc-lib-parserresult kind7ghc-lib-parser Arguments to ghc-lib-parser Returns a  substitution, the body type of the synonym (not yet substituted) and any arguments remaining from the application777777777777,,,,66666666666666666666666666666666666666666666666666666666666666677777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888887777777777777777666667666666,,,,666666666666666666666777777777777777777777777777777777788777777777777777777777777777777777777777778777777777777878878888888887788877878777778788878677766666666666666666666666666666777777768888None >Vghc-lib-parser3A kind of universal type, used for types and kinds. Any time a Type0 is pretty-printed, it is first converted to an  before being printed. See Note [Pretty printing via Iface syntax] in GHC.Core.Ppr.TyThingghc-lib-parser;Stores the arguments in a type application as a list. See &Note [Suppressing invisible arguments].8ghc-lib-parserShow forall flag1Unconditionally show the forall quantifier with (8 ) or when (8) the names used are free in the binder or when compiling with -fprint-explicit-foralls.8ghc-lib-parserDo we want to suppress kind annotations on binders? See Note [Suppressing binder signatures]8ghc-lib-parser!See Note [Holes in IfaceCoercion]8ghc-lib-parserThe various types of TyCons which have special, built-in syntax.8ghc-lib-parsera regular tycon8ghc-lib-parsere.g.  (a, b, c) or (a, b, c). The arity is the tuple width, not the tycon arity (which is twice the width in the case of unboxed tuples).8ghc-lib-parsere.g.  (a | b | c)8ghc-lib-parserA heterogeneous equality TyCon (i.e. eqPrimTyCon, eqReprPrimTyCon, heqTyCon) that is actually being applied to two types of the same kind. This affects pretty-printing only: see Note [Equality predicates in IfaceType]8ghc-lib-parserMake an 8 from an 8.9ghc-lib-parser Build the 7: from the binders and the result kind. Keep in sync with 7 in GHC.Core.TyCon.9ghc-lib-parser Extract an  from an 8.9ghc-lib-parser"Extract the variable name from an 8.9ghc-lib-parser Extract an  from an 8.9ghc-lib-parser"Extract the variable name from an 8.9ghc-lib-parserLike 9, but always uses an explicit forall.9ghc-lib-parser;Render the "forall ... ." or "forall ... ->" bit of a type.9ghc-lib-parserPrints "(C a, D b) =>", including the arrow. Used when we want to print a context in a type, so we use  to decide whether to parenthesise a singleton predicate; e.g. Num a => a -> a9ghc-lib-parserPrints a context or ()- if empty You give it the context precedence88888888888888888888888888888888888888######888888888888888888888888888888888888888888999999999999999999999999999999999999999999999888888888888888888888888888888888888888888888888888888888888888888888########88889999989999988888899999999999999999999999999999999999LNone3p(ghc-lib-parserA collection of sghc-lib-parser0The key type representing kinds in the compiler.ghc-lib-parserA type of the form p of constraint kind represents a value whose type is the Haskell predicate p/, where a predicate is what occurs before the => in a Haskell type.We use  as documentation to mark those types that we guarantee to have this kind.0It can be expanded into its representation, but:(The type checker must treat it as opaque1The rest of the compiler treats it as transparentConsider these examples: f :: (Eq a) => a -> Int g :: (?x :: Int -> Int) => a -> Int h :: (r\l) => {r} => {l::Int | r} Here the Eq a and ?x :: Int -> Int and rl are all called "predicates"ghc-lib-parserMult is a type alias for Type.Mult must contain Type because multiplicity variables are mere type variables (of kind Multiplicity) in Haskell. So the simplest implementation is to make Mult be Type.Multiplicities can be formed with: - One: GHC.Types.One (= oneDataCon) - Many: GHC.Types.Many (= manyDataCon) - Multiplication: GHC.Types.MultMul (= multMulTyCon)So that Mult feels a bit more structured, we provide pattern synonyms and smart constructors for these.ghc-lib-parser&A shorthand for data with an attached  element (the multiplicity).ghc-lib-parserA semantically more meaningful type to represent what may or may not be a useful .ghc-lib-parserA  represents an argument to a function. TyCoBinders can be dependent (:) or nondependent (:;). They may also be visible or not. See Note [TyCoBinders]ghc-lib-parserFor simplicity, we have just one UnivCo that represents a coercion from some type to some other type, with (in general) no restrictions on the type. The UnivCoProvenance specifies more exactly what the coercion really is and why a program should (or shouldn't!) trust the coercion. It is reasonable to consider each constructor of  as a totally independent coercion form; their only commonality is that they don't tell you what types they coercion between. (That info is in the 9 constructor of .ghc-lib-parserA  is concrete evidence of the equality/convertibility of two types.ghc-lib-parserA global typecheckable-thing, essentially anything that has a name. Not to be confused with a  TcTyThing, which is also a typecheckable thing but in the *local* context. See GHC.Tc.Utils.Env for how to retrieve a  given a .ghc-lib-parserLike mkTyCoForAllTy, but does not check the occurrence of the binder See Note [Unused coercion variable in ForAllTy]9ghc-lib-parser>What to do with coercion holes. See Note [Coercion holes] in GHC.Core.TyCo.Rep.9ghc-lib-parser.The returned env is used in the extended scope9ghc-lib-parserA coercion to be filled in by the type-checker. See Note [Coercion holes]9ghc-lib-parser>See Note [Phantom coercions]. Only in Phantom roled coercions9ghc-lib-parserFrom the fact that any two coercions are considered equivalent. See Note [ProofIrrelProv]. Can be used in Nominal or Representational coercions9ghc-lib-parserFrom a plugin, which asserts that this coercion is sound. The string is for the use of the plugin.:ghc-lib-parser;See Note [Coercion holes] Only present during typechecking:ghc-lib-parser: is like , but there can only be # in the : field.:ghc-lib-parserA type labeled : might have knot-tied tycons in it. See Note [Type checking recursive type and class declarations] in  GHC.Tc.TyCl:ghc-lib-parser;Vanilla type or kind variable (*never* a coercion variable):ghc-lib-parser+Type application to something other than a  . Parameters:1) Function: must not be a : or :, must be another :, or : See Note [Respecting definitional equality] (EQ1) about the no : requirement2) Argument type:ghc-lib-parserApplication of a , including newtypes and1 synonyms. Invariant: saturated applications of FunTyCon must use : and saturated synonyms must use their own constructors. However,  unsaturated FunTyCons do appear as :s. Parameters:%1) Type constructor being applied to.2) Type arguments. Might not have enough type arguments here to saturate the constructor. Even type synonyms are not necessarily saturated; for example unsaturated type synonyms can appear as the right hand side of a type synonym.:ghc-lib-parserA  type. INVARIANT: If the binder is a coercion variable, it must be mentioned in the Type. See Note [Unused coercion variable in ForAllTy]:ghc-lib-parserFUN m t1 t2 Very common, so an important special case See Note [Function types]:ghc-lib-parser/Type literals are similar to type constructors.:ghc-lib-parserA kind cast. The coercion is always nominal. INVARIANT: The cast is never reflexive INVARIANT: The Type is not a CastTy (use TransCo instead) INVARIANT: The Type is not a ForAllTy over a type variable See Note [Respecting definitional equality] (EQ2), (EQ3), (EQ4):ghc-lib-parserInjection of a Coercion into a type This should only ever be used in the RHS of an AppTy, in the list of a TyConApp, when applying a promoted GADT data constructor:ghc-lib-parser3The key representation of types within the compiler:ghc-lib-parserRemove the binder's variable from the set, if the binder has a variable.:ghc-lib-parser,Does this binder bind an invisible argument?:ghc-lib-parser)Does this binder bind a visible argument?:ghc-lib-parserIf its a named binder, is the binder a tyvar? Returns True for nondependent binder. This check that we're really returning a *Ty*Binder (as opposed to a coercion binder). That way, if/when we allow coercion quantification in more places, we'll know we missed updating some function.:ghc-lib-parser0Special, common, case: Arrow type with mult Many:ghc-lib-parserMake nested arrow types:ghc-lib-parser/Wraps foralls over the type using the provided #s from left to right:ghc-lib-parser/Wraps foralls over the type using the provided #s from left to right:ghc-lib-parserCreate the plain type constructor type which has been applied to no type arguments at all.:ghc-lib-parserA key function: builds a : or : as appropriate to its arguments. Applies its arguments to the constructor from left to right.:ghc-lib-parserApply a function to both the Mult and the Type in a 'Scaled Type'######999::::9999999999999999:::::::::::::::::::::#$$$$$$9999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::########9999999999999:::::99999999999::999999:::::::::::::::::::::#:$$$$:$$::::9999999::::9::::3:3:3:3:3 NoneJ:ghc-lib-parserReturns free variables of types, including kind variables as a non-deterministic set. For type synonyms it does not expand the synonym.:ghc-lib-parserAdd the kind variables free in the kinds of the tyvars in the given set. Returns a deterministically ordered list.:ghc-lib-parserAdd the kind variables free in the kinds of the tyvars in the given set. Returns a deterministic set.:ghc-lib-parser: that returns free variables of a type in a deterministic set. For explanation of why using $6 is not deterministic see Note [Deterministic FV] in  GHC.Utils.FV.:ghc-lib-parser: that returns free variables of a type in deterministic order. For explanation of why using $6 is not deterministic see Note [Deterministic FV] in  GHC.Utils.FV.:ghc-lib-parserReturns free variables of types, including kind variables as a deterministic set. For type synonyms it does not expand the synonym.:ghc-lib-parserReturns free variables of types, including kind variables as a deterministically ordered list. For type synonyms it does not expand the synonym.:ghc-lib-parserThe worker for : and tyCoFVsOfTypeList$. The previous implementation used $ which is O(n+m) and can make the function quadratic. It's exported, so that it can be composed with other functions that compute free variables. See Note [FV naming conventions] in  GHC.Utils.FV.Eta-expanded because that makes it run faster (apparently) See Note [FV eta expansion] in  GHC.Utils.FV for explanation.:ghc-lib-parser6Get a deterministic set of the vars free in a coercion:ghc-lib-parserGiven a covar and a coercion, returns True if covar is almost devoid in the coercion. That is, covar can only appear in Refl and GRefl. See last wrinkle in Note [Unused coercion variable in ForAllCo] in GHC.Core.Coercion:ghc-lib-parser Returns the free variables of a  that are in injective positions. Specifically, it finds the free variables while:Expanding type synonymsIgnoring the coercion in  (ty |> co)'Ignoring the non-injective fields of a :For example, if F& is a non-injective type family, then: 9injectiveTyVarsOf( Either c (Maybe (a, F b c)) ) = {a,c} If : ty = itvs, then knowing ty fixes itvs. More formally, if a is in : ty and S1(ty) ~ S2(ty), then S1(a) ~ S2(a) , where S1 and S2 are arbitrary substitutions.See Note [When does a tycon application need an explicit kind signature?].:ghc-lib-parser Returns the free variables of a  that are in injective positions. Specifically, it finds the free variables while:Expanding type synonymsIgnoring the coercion in  (ty |> co)'Ignoring the non-injective fields of a :See Note [When does a tycon application need an explicit kind signature?].:ghc-lib-parserReturns the set of variables that are used invisibly anywhere within the given type. A variable will be included even if it is used both visibly and invisibly. An invisible use site includes: * In the kind of a variable * In the kind of a bound variable in a forall * In a coercion * In a Specified or Inferred argument to a function See Note [VarBndrs, TyCoVarBinders, TyConBinders, and visibility] in GHC.Core.TyCo.Rep:ghc-lib-parserLike :, but for many types.:ghc-lib-parserDo a topological sort on a list of tyvars, so that binders occur before occurrences E.g. given [ a::k, k::*, b::k ] it'll return a well-scoped list [ k::*, a::k, b::k ]This is a deterministic sorting operation (that is, doesn't depend on Uniques).It is also meant to be stable: that is, variables should not be reordered unnecessarily. This is specified in Note [ScopedSort] See also Note [Ordering of implicit variables] in GHC.Rename.HsType:ghc-lib-parser+Get the free vars of a type in scoped order:ghc-lib-parser*Get the free vars of types in scoped order:ghc-lib-parserShould we look under injective type families? See Note [Coverage condition for injective type families] in GHC.Tc.Instance.Family.:ghc-lib-parserlook under injective type families? See Note [Coverage condition for injective type families] in GHC.Tc.Instance.Family..:::::::::::::::::::::::::::::::::::::::::::.:::::::::::::::::::::::::::::::::::::::::::Noneú;ghc-lib-parserThis tidies up a type for printing in an error message, or in an interface file.;It doesn't change the uniques at all, just the print names.;ghc-lib-parser Add the free s to the env in tidy form, so that we can tidy the type they are free in;ghc-lib-parser Treat a new # as a binder, and give it a fresh tidy name using the environment if one has not already been allocated. See also ;;ghc-lib-parser:Grabs the free type variables, tidies them and then uses ; to work over the type itself;ghc-lib-parserCalls ;= on a top-level type (i.e. with an empty tidying environment);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Noneً;ghc-lib-parserA substitution of s for #s;ghc-lib-parserA substitution of s for s and s for #s;ghc-lib-parserType & coercion substitutiontcvsubst_invariant* The following invariants must hold of a ;: The in-scope set is needed only* to guide the generation of fresh uniquesIn particular, the kind; of the type variables in the in-scope set is not relevantThe substitution is only applied ONCE! This is because in general such application will not reach a fixed point.;ghc-lib-parser(compose env1 env2)(x) is  env1(env2(x)) ; i.e. apply env2 then env14. It assumes that both are idempotent. Typically, env1* is the refinement to a base substitution env2;ghc-lib-parserComposes two substitutions, applying the second one provided first, like in function composition.;ghc-lib-parserMake a TCvSubst with specified tyvar subst and empty covar subst;ghc-lib-parserMake a TCvSubst with specified covar subst and empty tyvar subst;ghc-lib-parserReturns the free variables of the types in the range of a substitution as a non-deterministic set.;ghc-lib-parser#Generates the in-scope set for the ; from the types in the incoming environment. No CoVars, please!;ghc-lib-parser#Generates the in-scope set for the ; from the types in the incoming environment. No TyVars, please!;ghc-lib-parser#Generates the in-scope set for the ; from the types in the incoming environment. No CoVars, please!;ghc-lib-parserType substitution, see ;;ghc-lib-parserType substitution, see ;. Disables sanity checks. The problems that the sanity checks in substTy catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substTyUnchecked to substTy and remove this function. Please don't use in new code.;ghc-lib-parser.Substitute tyvars within a type using a known %. Pre-condition: the in_scope set should satisfy Note [The substitution invariant]; specifically it should include the free vars of tys , and of ty minus the domain of the subst.;ghc-lib-parserCoercion substitution, see ;;ghc-lib-parserCoercion substitution, see ;. Disables sanity checks. The problems that the sanity checks in substCo catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substCoUnchecked to substCo and remove this function. Please don't use in new code.;ghc-lib-parserSubstitute covars within a type;ghc-lib-parserType substitution, see ;;ghc-lib-parserType substitution, see ;;ghc-lib-parserSubstitute within a  after adding the free variables of the type to the in-scope set. This is useful for the case when the free variables aren't already in the in-scope set or easily available. See also Note [The substitution invariant].;ghc-lib-parser When calling ; it should be the case that the in-scope set in the substitution is a superset of the free vars of the range of the substitution. See also Note [The substitution invariant].;ghc-lib-parserThis checks if the substitution satisfies the invariant from Note [The substitution invariant].;ghc-lib-parserSubstitute within a  The substitution has to satisfy the invariants described in Note [The substitution invariant].;ghc-lib-parserSubstitute within a  disabling the sanity checks. The problems that the sanity checks in substTy catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substTyUnchecked to substTy and remove this function. Please don't use in new code.;ghc-lib-parserSubstitute within several s The substitution has to satisfy the invariants described in Note [The substitution invariant].;ghc-lib-parserSubstitute within several s disabling the sanity checks. The problems that the sanity checks in substTys catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substTysUnchecked to substTys and remove this function. Please don't use in new code.;ghc-lib-parserSubstitute within a  The substitution has to satisfy the invariants described in Note [The substitution invariant].;ghc-lib-parserSubstitute within a  disabling the sanity checks. The problems that the sanity checks in substTys catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substThetaUnchecked to substTheta and remove this function. Please don't use in new code.;ghc-lib-parserSubstitute within a  The substitution has to satisfy the invariants described in Note [The substitution invariant].;ghc-lib-parserSubstitute within a  disabling sanity checks. The problems that the sanity checks in substCo catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substCoUnchecked to substCo and remove this function. Please don't use in new code.;ghc-lib-parserSubstitute within several s The substitution has to satisfy the invariants described in Note [The substitution invariant].;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;None;ghc-lib-parser Primitive s that are defined in GHC.Prim but not exposed. It's important to keep these separate as we don't want users to be able to write them (see #15209) or see them in GHCi's :browse output (see #12023).;ghc-lib-parser Primitive 3s that are defined in, and exported from, GHC.Prim.<ghc-lib-parserThe FUN type constructor. FUN :: forall {m :: Multiplicity} {rep1 :: RuntimeRep} {rep2 :: RuntimeRep}. TYPE rep1 -> TYPE rep2 -> * The runtime representations quantification is left inferred. This means they cannot be specified with -XTypeApplications.This is a deliberate choice to allow future extensions to the function arrow. To allow visible application a type synonym can be defined: type Arr :: forall (rep1 :: RuntimeRep) (rep2 :: RuntimeRep). TYPE rep1 -> TYPE rep2 -> Type type Arr = FUN <ghc-lib-parserGiven a RuntimeRep, applies TYPE to it. see Note [TYPE and RuntimeRep]<ghc-lib-parser Convert a 6 to a > of kind RuntimeRep Defined here to avoid (more) module loops<ghc-lib-parserGiven a Role, what TyCon is the type of equality predicates at that role?;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========================================<;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<;;;<<;<<;<<;<<;<<;<<;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<;<<;<<;<<;<<;<<;<<;<<;<<<<<<<<<<<<<<<<<<<<<<<<========================================NNone&?/ghc-lib-parserGiven a = and a list of argument types, partition the arguments into: # or # (i.e., invisible) arguments and# (i.e., visible) argumentsghc-lib-parser The same as fst . splitTyConAppghc-lib-parserAttempts to tease a type apart into a type constructor and the application of a number of arguments to that constructorghc-lib-parserThis version considers Constraint to be the same as *. Returns True if the argument is equivalent to Type/Constraint and False otherwise. See Note [Kind Constraint and kind Type]ghc-lib-parserIs this the type  Multiplicity?ghc-lib-parserIs this the type 6?ghc-lib-parserGives the typechecker view of a type. This unwraps synonyms but leaves  Constraint alone. c.f. coreView, which turns Constraint into TYPE LiftedRep. Returns Nothing if no unwrapping happens. See also Note [coreView vs tcView]ghc-lib-parserThis function Strips off the top layer only of a type synonym application (if any) its underlying representation type. Returns Nothing if there is nothing to look through. This function considers  Constraint to be a synonym of TYPE LiftedRep.By being non-recursive and inlined, this case analysis gets efficiently joined onto the case analysis that the caller is already doingghc-lib-parserMake a :. The Coercion must be nominal. Checks the Coercion for reflexivity, dropping it if it's reflexive. See Note [Respecting definitional equality] in GHC.Core.TyCo.Repghc-lib-parser&Applies a type to another, as in e.g. k a=ghc-lib-parserThis describes how a "map" operation over a type/coercion should behave=ghc-lib-parser>What to do with coercion holes. See Note [Coercion holes] in GHC.Core.TyCo.Rep.=ghc-lib-parser.The returned env is used in the extended scope=ghc-lib-parserThis is used only for TcTyCons a) To zonk TcTyCons b) To turn TcTyCons into TyCons. See Note [Type checking recursive type and class declarations] in  GHC.Tc.TyCl=ghc-lib-parserExpand out all type synonyms. Actually, it'd suffice to expand out just the ones that discard type variables (e.g. type Funny a = Int) But we don't know which those are currently, so we just expand all.= only expands out type synonyms mentioned in the type, not in the kinds of any TyCon or TyVar mentioned in the type.Keep this synchronized with synonymTyConsOfType=ghc-lib-parserExtract the RuntimeRep classifier of a type from its kind. For example, kindRep * = LiftedRep; Panics if this is not possible. Treats * and Constraint as the same=ghc-lib-parserGiven a kind (TYPE rr), extract its RuntimeRep classifier rr. For example,  kindRep_maybe * = Just LiftedRep Returns H if the kind is not of form (TYPE rr) Treats * and Constraint as the same=ghc-lib-parserReturns True if the kind classifies unlifted types and False otherwise. Note that this returns False for levity-polymorphic kinds, which may be specialized to a kind that classifies unlifted types.=ghc-lib-parserIs a tyvar of type 6?=ghc-lib-parserIs a tyvar of type  Multiplicity?=ghc-lib-parser2Attempts to obtain the type variable underlying a , and panics with the given message if this is not a type variable type. See also ==ghc-lib-parser2Attempts to obtain the type variable underlying a =ghc-lib-parserIf the type is a tyvar, possibly under a cast, returns it, along with the coercion. Thus, the co is :: kind tv ~N kind ty=ghc-lib-parser2Attempts to obtain the type variable underlying a , without any expansion=ghc-lib-parserAttempt to take a type application apart, whether it is a function, type constructor, or plain type application. Note that type family applications are NEVER unsaturated by this!=ghc-lib-parserDoes the AppTy split as in =7, but assumes that any Core view stuff is already done=ghc-lib-parserDoes the AppTy split as in tcSplitAppTy_maybe, but assumes that any coreView stuff is already done. Refuses to look through (c => t)=ghc-lib-parser1Attempts to take a type application apart, as in =%, and panics if this is not possible=ghc-lib-parserRecursively splits a type as far as is possible, leaving a residual type being applied to and the type arguments applied to it. Never fails, even if that means returning an empty list of type applications.=ghc-lib-parserLike =(, but doesn't look through type synonyms=ghc-lib-parser>Is this a numeric literal. We also look through type synonyms.=ghc-lib-parser=Is this a symbol literal. We also look through type synonyms.=ghc-lib-parser+Is this a type literal (symbol or numeric).=ghc-lib-parserIs this type a custom user error? If so, give us the kind and the error message.=ghc-lib-parser=Render a type corresponding to a user type error into a SDoc.=ghc-lib-parserAttempts to extract the argument and result types from a type, and panics if that is not possible. See also ==ghc-lib-parser=Attempts to extract the argument and result types from a type=ghc-lib-parserExtract the function result type and panic if that is not possible=ghc-lib-parser Just like =/ but for a single argument Try not to iterate , because it's inefficient to substitute one variable at a time; instead use 'piResultTys"Extract the function argument type and panic if that is not possible=ghc-lib-parser(piResultTys f_ty [ty1, .., tyn]) gives the type of (f ty1 .. tyn) where f :: f_ty =" is interesting because: 1. f_ty may have more for-alls than there are args 2. Less obviously, it may have fewer for-alls For case 2. think of: piResultTys (forall a.a) [forall b.b, Int] This really can happen, but only (I think) in situations involving undefined. For example: undefined :: forall a. a Term: undefined (forall b. b->b) Int This term should have type (Int -> Int), but notice that there are more type args than foralls in s type.=ghc-lib-parserk(k:*),(b:k),(c:k)- We want (k:*) Named, (b:k) Anon, (c:k) AnonAll non-coercion binders are visible.=ghc-lib-parserTake a ForAllTy apart, returning the list of tycovars and the result type. This always succeeds, even if it returns only an empty list. Note that the result type returned may have free variables that were bound by a forall.=ghc-lib-parserLike =, but only splits :s with # type variable binders. Furthermore, each returned tyvar is annotated with ().=ghc-lib-parserLike =, but only splits :s with # type variable binders. Furthermore, each returned tyvar is annotated with its #.=ghc-lib-parser binders and returns TyCoVarBinders rather than TyCoBinders>ghc-lib-parserGiven a  and a list of argument types, filter out any invisible (i.e., # or # ) arguments.>ghc-lib-parserGiven a . and a list of argument types, filter out any # arguments.>ghc-lib-parserGiven a list of things paired with their visibilities, partition the things into (invisible things, visible things).>ghc-lib-parserGiven a + and a list of argument types to which the 5 is applied, determine each argument's visibility (#, #, or #).)Wrinkle: consider the following scenario: T :: forall k. k -> k tyConArgFlags T [forall m. m -> m -> m, S, R, Q]After substituting, we get T (forall m. m -> m -> m) :: (forall m. m -> m -> m) -> forall n. n -> n -> n'Thus, the first argument is invisible, S is visible, R is invisible again, and Q is visible.>ghc-lib-parserGiven a + and a list of argument types to which the 5 is applied, determine each argument's visibility (#, #, or #).(Most of the time, the arguments will be #, but not always. Consider f :: forall a. a -> Type. In  f Type Bool, the first argument (Type) is # and the second argument (Bool) is #?. It is precisely this sort of higher-rank situation in which > comes in handy, since  f Type Bool$ would be represented in Core using :s. (See also #15792).>ghc-lib-parserMake an anonymous binder>ghc-lib-parser)Does this binder bind a variable that is not erased? Returns J for anonymous binders.>ghc-lib-parser)Extract a relevant type, if there is one.>ghc-lib-parserGiven a family instance TyCon and its arg types, return the corresponding family type. E.g: 1data family T a data instance T (Maybe b) = MkT b%Where the instance tycon is :RTL, so: +mkFamilyTyConApp :RTL Int = T (Maybe Int)>ghc-lib-parserGet the type on the LHS of a coercion induced by a type/data family instance.>ghc-lib-parserDoes this type classify a core (unlifted) Coercion? At either role nominal or representational (t1 ~ t2) or (t1 ~R t2) See Note [Types for coercions, predicates, and evidence] in GHC.Core.TyCo.Rep>ghc-lib-parserReturns Just True if this type is surely lifted, Just False if it is surely unlifted, Nothing if we can't be sure (i.e., it is levity polymorphic), and panics if the kind does not have the shape TYPE r.>ghc-lib-parserSee Type#type_classification for what an unlifted type is. Panics on levity polymorphic types; See > for a more approximate predicate that behaves better in the presence of levity polymorphism.>ghc-lib-parserReturns:G if the type is  guaranteed lifted orJ if it is unlifted, OR we aren't sure (e.g. in a levity-polymorphic case)>ghc-lib-parser3Is this a type of kind RuntimeRep? (e.g. LiftedRep)>ghc-lib-parser+Drops prefix of RuntimeRep constructors in :s. Useful for e.g. dropping 'LiftedRep arguments of unboxed tuple TyCon applications:dropRuntimeRepArgs [ 'LiftedRep, 'IntRep , String, Int ] == [String, Int]>ghc-lib-parserghc-lib-parserghc-lib-parserSee Type#type_classification; for what an algebraic type is. Should only be applied to types;, as opposed to e.g. partially saturated type constructors>ghc-lib-parser*Check whether a type is a data family type>ghc-lib-parserComputes whether an argument (or let right hand side) should be computed strictly or lazily, based only on its type. Currently, it's just >%. Panics on levity-polymorphic types.>ghc-lib-parser1Returns true of types that are opaque to Haskell.>ghc-lib-parserDetermine whether a type could be the type of a join point of given total arity, according to the polymorphism rule. A join point cannot be polymorphic in its return type, since given join j a b x y z = e1 in e2, the types of e1 and e2 must be the same, and a and b are not in scope for e2. (See Note [The polymorphism rule of join points] in GHC.Core.) Returns False also if the type simply doesn't have enough arguments.Note that we need to know how many arguments (type *and* value) the putative join point takes; for instance, if j :: forall a. a -> Int then j could be a binary join point returning an Int, but it could *not* be a unary join point returning a -> Int.4TODO: See Note [Excess polymorphism and join points]>ghc-lib-parser5Type equality on source types. Does not look through newtypes or s, but it does look through type synonyms. This first checks that the kinds of the types are equal and then checks whether the types are equal, ignoring casts and coercions. (The kind check is a recursive call, but since all kinds have type Type, there is no need to check the types of kinds.) See also Note [Non-trivial definitional equality] in GHC.Core.TyCo.Rep.>ghc-lib-parser7Compare types with respect to a (presumably) non-empty %.>ghc-lib-parserType equality on lists of types, looking through type synonyms but not newtypes.>ghc-lib-parser Compare two s. NB: This should never see  Constraint (as recognized by Kind.isConstraintKindCon) which is considered a synonym for 7 in Core. See Note [Kind Constraint and kind Type] in  GHC.Core.Type*. See Note [nonDetCmpType nondeterminism]>ghc-lib-parserIs this kind equivalent to *?This considers  Constraint to be distinct from *8. For a version that treats them as the same type, see .>ghc-lib-parserIs this kind equivalent to TYPE r (for some unknown r)?This considers  Constraint to be distinct from *.>ghc-lib-parserReturns True if a type is levity polymorphic. Should be the same as (isKindLevPoly . typeKind) but much faster. Precondition: The type has kind (TYPE blah)>ghc-lib-parserLooking past all pi-types, is the end result potentially levity polymorphic? Example: True for (forall r (a :: TYPE r). String -> a) Example: False for (forall r1 r2 (a :: TYPE r1) (b :: TYPE r2). a -> b -> Type)>ghc-lib-parserAll type constructors occurring in the type; looking through type synonyms, but not newtypes. When it finds a Class, it returns the class TyCon.>ghc-lib-parserFind the result . of a type synonym, after applying it to its arity number of type variables Actually this function works fine on data types too, but they'd always return , so we never need to ask>ghc-lib-parserRetrieve the free variables in this type, splitting them based on whether they are used visibly or invisibly. Invisible ones come first.>ghc-lib-parser5Tests whether the given kind (which should look like TYPE x) is something other than a constructor tree (that is, constructors at every node). E.g. True of TYPE k, TYPE (F Int) False of TYPE 'LiftedRep>ghc-lib-parserDoes this classify a type allowed to have values? Responds True to things like *, #, TYPE Lifted, TYPE v, Constraint.$True of any sub-kind of OpenTypeKind>ghc-lib-parserDoes a  (that is applied to some number of arguments) need to be ascribed with an explicit kind signature to resolve ambiguity if rendered as a source-syntax type? (See Note [When does a tycon application need an explicit kind signature?]; for a full explanation of what this function checks for.)>ghc-lib-parserScale a payload by Many>ghc-lib-parserScale a payload by One>ghc-lib-parser8Scale a payload by Many; used for type arguments in core>ghc-lib-parser isLinear t returns True of a if t is a type of (curried) function where at least one argument is linear (or otherwise non-unrestricted). We use this function to check whether it is safe to eta reduce an Id in CorePrep. It is always safe to return J , because J deactivates the optimisation.=ghc-lib-parserbindersghc-lib-parserfree variables of result>ghc-lib-parserresult kind>ghc-lib-parserShould specified binders count towards injective positions in the kind of the TyCon? (If you're using visible kind applications, then you want True here.ghc-lib-parserThe number of args the  is applied to.ghc-lib-parserDoes  T t_1 ... t_n need a kind signature? (Where n is the number of arguments)#######::::########$$$$$$$$$$$$$$79999999::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<========================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>::::###########:$###:::====$#=======:::::::=====::=========::===================::===>>=====>======>====>>>>>>=========9999999:=$$$$$$>>$$$$>>>>$$:::=<#=======>>>>>>>===>>>>>>>>=>>>=>>>>>>==>>>>>>>>>>>#::::::::::>>=:>::::::>>>>>>>>>>>>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7>>None3Q.>ghc-lib-parserNumeric literal type>ghc-lib-parserInteger (see Note [BigNum literals])>ghc-lib-parserNatural (see Note [BigNum literals])>ghc-lib-parserInt# - according to target machine>ghc-lib-parserInt64# - exactly 64 bits>ghc-lib-parserWord# - according to target machine>ghc-lib-parserWord64# - exactly 64 bits>ghc-lib-parser So-called > s are one of:An unboxed numeric literal or floating-point literal which is presumed to be surrounded by appropriate constructors (Int#2, etc.), so that the overall thing makes sense.#We maintain the invariant that the @ in the > constructor is actually in the (possibly target-dependent) range. The mkLit{Int,Word}*Wrap smart constructors ensure this by applying the target machine's wrapping semantics. Use these in situations where you know the wrapping semantics are correct.The literal derived from the label mentioned in a "foreign label" declaration (>)A >" to be used in place of values of 6 (i.e.  'MutVar#') when the value is never used. A characterA stringThe NULL pointer>ghc-lib-parserChar#" - at least 31 bits. Create with >>ghc-lib-parserAny numeric literal that can be internally represented with an Integer.>ghc-lib-parserA string-literal: stored and emitted UTF-8 encoded, we'll arrange to decode it at runtime. Also emitted with a '\0' terminator. Create with >>ghc-lib-parserThe NULL pointer, the only pointer value that can be represented as a Literal. Create with ?>ghc-lib-parserA nonsense value, used when an unlifted binding is absent and has type  forall (a :: TYPE 6). a. May be lowered by code-gen to any possible value. Also see Note [Rubbish literals]>ghc-lib-parserFloat#. Create with >>ghc-lib-parserDouble#. Create with >>ghc-lib-parserA label literal. Parameters::1) The name of the symbol mentioned in the declaration2) The size (in bytes) of the arguments the label expects. Only applicable with stdcall labels. Just x => ? will be appended to label name when emitting assembly.3) Flag indicating whether the symbol references a function or a data>ghc-lib-parserghc-lib-parserCreate a numeric > of the given type>ghc-lib-parser>Check that a given number is in the range of a numeric literal>ghc-lib-parserCreate a numeric > of the given type>ghc-lib-parser Creates a > of type Int#>ghc-lib-parser Creates a > of type Int#. If the argument is out of the (target-dependent) range, it is wrapped. See Note [Word Int underflow overflow]>ghc-lib-parser Creates a > of type Int# without checking its range.>ghc-lib-parser Creates a > of type Int#, as well as a ;ean flag indicating overflow. That is, if the argument is out of the (target-dependent) range the argument is wrapped and the overflow flag will be set. See Note [Word Int underflow overflow]>ghc-lib-parser Creates a > of type Word#>ghc-lib-parser Creates a > of type Word#. If the argument is out of the (target-dependent) range, it is wrapped. See Note [Word Int underflow overflow]>ghc-lib-parser Creates a > of type Word#, as well as a ;ean flag indicating carry. That is, if the argument is out of the (target-dependent) range the argument is wrapped and the carry flag will be set. See Note [Word Int underflow overflow]>ghc-lib-parser Creates a > of type Int64#>ghc-lib-parser Creates a > of type Int64#8. If the argument is out of the range, it is wrapped.>ghc-lib-parser Creates a > of type Word64#>ghc-lib-parser Creates a > of type Word64#8. If the argument is out of the range, it is wrapped.>ghc-lib-parser Creates a > of type Float#>ghc-lib-parser Creates a > of type Double#>ghc-lib-parser Creates a > of type Char#>ghc-lib-parser Creates a > of type Addr#, which is appropriate for passing to e.g. some of the "error" functions in GHC.Err such as GHC.Err.runtimeError>ghc-lib-parserTests whether the literal represents a zero of whatever type it is>ghc-lib-parser Returns the @ contained in the >', for when that makes sense, i.e. for <, ?, E,  LitInteger and  LitNatural.>ghc-lib-parser Returns the @ contained in the >', for when that makes sense, i.e. for < and numbers.>ghc-lib-parserApply a function to the @ contained in the >', for when that makes sense, e.g. for < and numbers. For fixed-size integral literals, the result will be wrapped in accordance with the semantics of the target type. See Note [Word Int underflow overflow]>ghc-lib-parserIndicate if the > contains an @ value, e.g. <, ?, E,  LitInteger and  LitNatural.>ghc-lib-parser0Narrow a literal number (unchecked result range)?ghc-lib-parserA nonsense literal of type  forall (a :: TYPE 6). a.?ghc-lib-parserTrue if there is absolutely no penalty to duplicating the literal. False principally of strings."Why?", you say? I'm glad you asked. Well, for one duplicating strings would blow up code sizes. Not only this, it's also unsafe.Consider a program that wants to traverse a string. One way it might do this is to first compute the Addr# pointing to the end of the string, and then, starting from the beginning, bump a pointer using eqAddr# to determine the end. For instance, -- Given pointers to the start and end of a string, count how many zeros -- the string contains. countZeros :: Addr -> Addr -> -> Int countZeros start end = go start 0 where go off n | off  `addrEq#`- end = n | otherwise = go (off  `plusAddr#` 1) n' where n' | isTrue (indexInt8OffAddr off 0 == 0#) = n + 1 | otherwise = n Consider what happens if we considered strings to be trivial (and therefore duplicable) and emitted a call like countZeros "hello" ("hello" plusAddr# 5). The beginning and end pointers do not belong to the same string, meaning that an iteration like the above would blow up terribly. This is what happened in #12757.Ultimately the solution here is to make primitive strings a bit more structured, ensuring that the compiler can't inline in ways that will break user code. One approach to this is described in #8472.?ghc-lib-parser?True if code space does not go bad if we duplicate this literal?ghc-lib-parserFind the Haskell  the literal occupies?ghc-lib-parserNeeded for the Ord instance of AltCon, which in turn is needed in .>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?????????????>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???>>???>>?>>>>>>>>>>>>>>>>>??????None >?R?????????????????????????????????????????????????1?1?1None 567Sl????????????None '(/>[?ghc-lib-parserGraph' is abstracted over the block type, so that we can build graphs of annotated blocks for example (Compiler.Hoopl.Dataflow needs this).?ghc-lib-parserA control-flow graph, which may take any of four shapes (O/O, OC, CO, C/C). A graph open at the entry has a single, distinguished, anonymous entry point; if a graph is closed at the entry, its entry point(s) are supplied by a context.?ghc-lib-parserGives access to the anchor points for nonlocal edges as well as the edges themselves?ghc-lib-parser5A (possibly empty) collection of closed/closed blocks?ghc-lib-parserMaps over all nodes in a graph.?ghc-lib-parser Function ? enables a change of representation of blocks, nodes, or both. It lifts a polymorphic block transform into a polymorphic graph transform. When the block representation stabilizes, a similar function should be provided for blocks.?ghc-lib-parserReturns a list of blocks reachable from the provided Labels in the reverse postorder.This is the most important traversal over this data structure. It drops unreachable code and puts blocks in an order that is good for solving forward dataflow problems quickly. The reverse order is good for solving backward dataflow problems quickly. The forward order is also reasonably good for emitting instructions, except that it will not usually exploit Forrest Baskett's trick of eliminating the unconditional branch from a loop. For that you would need a more serious analysis, probably based on dominators, to identify loop headers.For forward analyses we want reverse postorder visitation, consider: - A -> [B,C] B -> D C -> D  Postorder: [D, C, B, A] (or [D, B, C, A]) Reverse postorder: [A, B, C, D] (or [A, C, B, D]) This matters for, e.g., forward analysis, because we want to analyze *both* B and C before we analyze D.?ghc-lib-parser"The label of a first node or block?ghc-lib-parserGives control-flow successors????????????????????????????????None-23>?b?ghc-lib-parserOverloaded Literal Value?ghc-lib-parserInteger-looking literals;?ghc-lib-parserFrac-looking literals?ghc-lib-parserString-looking literals?ghc-lib-parserHaskell Overloaded Literal?ghc-lib-parserHaskell Literal?ghc-lib-parser Character?ghc-lib-parserUnboxed character?ghc-lib-parserString?ghc-lib-parser Packed bytes?ghc-lib-parserGenuinely an Int; arises from GHC.Tc.Deriv.Generate, and from TRANSLATION?ghc-lib-parserliteral Int#?ghc-lib-parserliteral Word#?ghc-lib-parserliteral Int64#?ghc-lib-parserliteral Word64#?ghc-lib-parserGenuinely an integer; arises only from TRANSLATION (overloaded literals are done with HsOverLit)?ghc-lib-parserGenuinely a rational; arises only from TRANSLATION (overloaded literals are done with HsOverLit)?ghc-lib-parser Unboxed Float@ghc-lib-parserUnboxed Double@ghc-lib-parser0Convert a literal from one index type to another@ghc-lib-parserpmPprHsLit pretty prints literals and is used when pretty printing pattern match warnings. All are printed the same (i.e., without hashes if they are primitive and not wrapped in constructors if they are boxed). This happens mainly for too reasons: * We do not want to expose their internal representation * The warnings become too messy@ghc-lib-parser@ p l returns J if a literal l- needs to be parenthesized under precedence p.@ghc-lib-parser@ p ol returns J if an overloaded literal ol, needs to be parenthesized under precedence p.$???????????????@@????????????@@@@@@@$?@@??????????????????????????@@@@@@@ONoneg@ghc-lib-parserPrint a user-level forall; see Note [When to print foralls] in GHC.Iface.Type.@ghc-lib-parserdebugPprType is a simple pretty printer that prints a type without going through IfaceType. It does not format as prettily as the normal route, but it's much more direct, and that can be useful for debugging. E.g. with -dppr-debug it prints the kind on type-variable  occurrences1 which the normal route fundamentally cannot do.@ghc-lib-parser#Display all kind information (with -fprint-explicit-kinds) when the provided ; argument is J. See 'Note [Kind arguments in error messages] in  GHC.Tc.Errors.@ghc-lib-parserThis variant preserves any use of TYPE in a type, effectively locally setting -fprint-explicit-runtime-reps.@ghc-lib-parserPretty prints a , using the family instance in case of a representation tycon. For example: data T [a] = ...In that case we want to print T [a], where T is the family %::@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@::rNonel!&ghc-lib-parserPattern SynonymSee Note [Pattern synonym representation] See Note [Pattern synonym signature contexts]&ghc-lib-parserThe  of the &+, giving it a unique, rooted identification&ghc-lib-parserArity of the pattern synonym@ghc-lib-parserBuild a new pattern synonym@ghc-lib-parser Should the & be presented infix?@ghc-lib-parser5Extract the type for any given labelled field of the DataCon@ghc-lib-parserPrint the type of a pattern synonym. The foralls are printed explicitly@ghc-lib-parser&Is the pattern synonym declared infix?ghc-lib-parser:Universially-quantified type variables and required dictsghc-lib-parser;Existentially-quantified type variables and provided dictsghc-lib-parserOriginal argumentsghc-lib-parserOriginal result typeghc-lib-parserName of matcherghc-lib-parserName of builderghc-lib-parser/Names of fields for a record pattern synonym&&&&&@@@@@@@@@@@@@@&@&&@@@@@&@@@&@@@@@None&3m@ghc-lib-parsermkMultSup w1 w2" returns a multiplicity such that mkMultSup w1 w2 >= w1 and mkMultSup w1 w2 >= w2.. See Note [Overapproximating multiplicities].@ghc-lib-parser submult w1 w2' check whether a value of multiplicity w1+ is allowed where a value of multiplicity w2& is expected. This is a partial order.9:::==>>>>>>@@@@@@@@@==@@@@9::>>>>>>@@@@@:None&o@ghc-lib-parser|lookupUE x env| returns the multiplicity assigned to |x| in |env|, if |x| is not bound in |env|, then returns |Zero| or |Bottom|.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MNone?-ghc-lib-parserIf it is the case that c :: (t1 ~ t2)i.e. the kind of c relates t1 and t2, then coercionKind c = Pair t1 t2.-ghc-lib-parserliftCoSubst role lc ty produces a coercion (at role role) that coerces between  lc_left(ty) and  lc_right(ty) , where lc_left is a substitution mapping type variables to the left-hand types of the mapped coercions in lc, and similar for lc_right.-ghc-lib-parserMakes a coercion type from two types: the types whose equality is proven by the relevant -ghc-lib-parserSlowly checks if the coercion is reflexive. Don't call this in a loop, as it walks over the entire coercion.-ghc-lib-parserTests if this coercion is obviously reflexive. Guaranteed to work very quickly. Sometimes a coercion can be reflexive, but not obviously so. c.f. --ghc-lib-parserTests if this coercion is obviously a generalized reflexive coercion. Guaranteed to work very quickly.-ghc-lib-parser$Make a "coercion between coercions".-ghc-lib-parserGiven co :: (a :: k) ~ (b :: k') produce  co' :: k ~ k'.-ghc-lib-parser!Make a nominal reflexive coercion-ghc-lib-parser%Make a generalized reflexive coercion-ghc-lib-parserInstantiates a .-ghc-lib-parser Create a new  by composing the two given s transitively. (co1 ; co2)-ghc-lib-parser(Create a symmetric version of the given  that asserts equality between the same types but in the other "direction", so a kind of t1 ~ t2 becomes the kind t2 ~ t1.-ghc-lib-parser6Make a universal coercion between two arbitrary types.-ghc-lib-parserMake a phantom coercion between two types. The coercion passed in must be a nominal coercion between the kinds of the types.-ghc-lib-parserBuild a function  from two other s. That is, given  co1 :: a ~ b and  co2 :: x ~ y produce co :: (a -> x) ~ (b -> y).-ghc-lib-parserMake a Coercion from a tycovar, a kind coercion, and a body coercion. The kind of the tycovar should be the left-hand kind of the kind coercion. See Note [Unused coercion variable in ForAllCo]-ghc-lib-parserApply a  to another . The second coercion must be Nominal, unless the first is Phantom. If the first is Phantom, then the second can be either Phantom or Nominal.-ghc-lib-parserApply a type constructor to a list of coercions. It is the caller's responsibility to get the roles correct on argument coercions.-ghc-lib-parserMake a reflexive coercion@ghc-lib-parser9The result of stepping in a normalisation function. See A.@ghc-lib-parserNothing more to do@ghc-lib-parser2Utter failure. The outer function should fail too.@ghc-lib-parserWe stepped, yielding new bits; ^ ev is evidence; Usually a co :: old type ~ new type@ghc-lib-parserA function to check if we can reduce a type by one step. Used with A.@ghc-lib-parserThis breaks a  with type T A B C ~ T D E F into a list of  s of kinds A ~ D, B ~ E and E ~ F. Hence: decomposeCo 3 c [r1, r2, r3] = [nth r1 0 c, nth r2 1 c, nth r3 2 c]@ghc-lib-parser2Attempts to obtain the type variable underlying a @ghc-lib-parserAttempts to tease a coercion apart into a type constructor and the application of a number of coercion arguments to that constructor@ghc-lib-parser-Attempt to take a coercion application apart.@ghc-lib-parserLike @(, but only returns Just for tyvar binder@ghc-lib-parserLike @(, but only returns Just for covar binder@ghc-lib-parserTests if this MCoercion is obviously generalized reflexive Guaranteed to work very quickly.@ghc-lib-parserReturns the type coerced if this coercion is a generalized reflexive coercion. Guaranteed to work very quickly.@ghc-lib-parserReturns the type coerced if this coercion is reflexive. Guaranteed to work very quickly. Sometimes a coercion can be reflexive, but not obviously so. c.f. @@ghc-lib-parserExtracts the coerced type from a reflexive coercion. This potentially walks over the entire coercion, so avoid doing this in a loop.@ghc-lib-parser*Make a representational reflexive coercion@ghc-lib-parserApplies multiple  s to another  , from left to right. See also -.Aghc-lib-parserMake nested ForAllCosAghc-lib-parserMake a Coercion quantified over a type/coercion variable; the variable has the same type in both sides of the coercionAghc-lib-parserExtract a covar, if possible. This check is dirty. Be ashamed of yourself. (It's dirty because it cares about the structure of a coercion, which is morally reprehensible.)Aghc-lib-parserReturn the left-hand type of the axiom, when the axiom is instantiated at the types given.Aghc-lib-parser5Instantiate the left-hand side of an unbranched axiomAghc-lib-parser$Make a coercion from a coercion holeAghc-lib-parser'Compose two MCoercions via transitivityAghc-lib-parserIf you're about to call mkNthCo r n co, then r should be whatever nthCoRole n co returns.Aghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2 , produces co' :: ty ~r (ty |> co)Aghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2 , produces co' :: (ty |> co) ~r tyAghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2, co2:: ty ~r ty', produces @co' :: (ty |> co) ~r ty' It is not only a utility function, but it saves allocation when co is a GRefl coercion.Aghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2, co2:: ty' ~r ty, produces @co' :: ty' ~r (ty |> co) It is not only a utility function, but it saves allocation when co is a GRefl coercion.Aghc-lib-parserLike ŏ, but panics if the change isn't a downgrade. See Note [Role twiddling functions]Aghc-lib-parserConverts a coercion to be nominal, if possible. See Note [Role twiddling functions]Aghc-lib-parserlike mkKindCo, but aggressively & recursively optimizes to avoid using a KindCo constructor. The output role is nominal.Aghc-lib-parserCreates a new coercion with both of its types casted by different casts !castCoercionKind2 g r t1 t2 h1 h2, where  g :: t1 ~r t2 , has type (t1 |> h1) ~r (t2 |> h2). h1 and h2 must be nominal.Aghc-lib-parsercastCoercionKind1 g r t1 t2 h = coercionKind g r t1 t2 h h That is, it's a specialised form of castCoercionKind, where the two kind coercions are identical castCoercionKind1 g r t1 t2 h, where  g :: t1 ~r t2 , has type (t1 |> h) ~r (t2 |> h). h/ must be nominal. See Note [castCoercionKind1]Aghc-lib-parserCreates a new coercion with both of its types casted by different casts castCoercionKind g h1 h2, where  g :: t1 ~r t2 , has type (t1 |> h1) ~r (t2 |> h2). h1 and h2 must be nominal. It calls coercionKindRole#, so it's quite inefficient (which I stands for) Use castCoercionKind2 instead if t1, t2, and r are known beforehand.Aghc-lib-parserGiven a family instance  and its arg $s, return the corresponding family . E.g: 1data family T a data instance T (Maybe b) = MkT bWhere the instance  is :RTL, so: mkFamilyTyConAppCo :RTL (co :: a ~# Int) = T (Maybe a) ~# T (Maybe Int)cf. >Aghc-lib-parserMake a forall , where both types related by the coercion are quantified over the same variable.Aghc-lib-parserIf co :: T ts ~ rep_ty then: +instNewTyCon_maybe T ts = Just (rep_ty, co)-Checks for a newtype, and for being saturatedAghc-lib-parserTry one stepper and then try the next, if the first doesn't make progress. So if it returns NS_Done, it means that both steppers are satisfiedAghc-lib-parserA @ that unwraps newtypes, careful not to fall into a loop. If it would fall into a loop, it produces @.Aghc-lib-parserA general function for normalising the top-level of a type. It continues to use the provided @ until that function fails, and then this function returns. The roles of the coercions produced by the @ must all be the same, which is the role returned from the call to A.Typically ev is Coercion.If topNormaliseTypeX step plus ty = Just (ev, ty') then ty ~ev1~ t1 ~ev2~ t2 ... ~evn~ ty' and ev = ev1 plus ev2 plus ... plus evn If it returns Nothing then no newtype unwrapping could happenAghc-lib-parser$Sometimes we want to look through a newtype< and get its associated coercion. This function strips off newtype1 layers enough to reveal something that isn't a newtype&. Specifically, here's the invariant: 5topNormaliseNewType_maybe rec_nts ty = Just (co, ty') then (a) co : ty0 ~ ty'". (b) ty' is not a newtype.The function returns Nothing for non-newtypes, or unsaturated applicationsThis function does *not* look through type families, because it has no access to the type family environment. If you do have that at hand, consider to use topNormaliseType_maybe, which should be a drop-in replacement for topNormaliseNewType_maybe If topNormliseNewType_maybe ty = Just (co, ty'), then co : ty ~R ty'Aghc-lib-parserSyntactic equality of coercionsAghc-lib-parser Compare two s, with respect to an RnEnv2Aghc-lib-parser,Extend a lifting context with a new mapping.Aghc-lib-parserExtend a lifting context with a new mapping, and extend the in-scope setAghc-lib-parser+Erase the environments in a lifting contextAghc-lib-parserLike ; , but works on a lifting contextAghc-lib-parser,Is a var in the domain of a lifting context?Aghc-lib-parser"Apply "sym" to all coercions in a @Aghc-lib-parser;Extract the underlying substitution from the LiftingContextAghc-lib-parserGet the % from a -Aghc-lib-parserApply - to multiple sAghc-lib-parserGet a coercion's kind and role.Aghc-lib-parser"Retrieve the role from a coercion.Aghc-lib-parserCreates a primitive type equality predicate. Invariant: the types are not CoercionsAghc-lib-parser3Makes a lifted equality predicate at the given roleAghc-lib-parser?Creates a primitive type equality predicate with explicit kindsAghc-lib-parserCreates a primitive representational type equality predicate with explicit kindsAghc-lib-parserAssuming that two types are the same, ignoring coercions, find a nominal coercion between the types. This is useful when optimizing transitivity over coercion applications, where splitting two AppCos might yield different kinds. See Note [EtaAppCo] in GHC.Core.Coercion.Opt.Aghc-lib-parser5Is there a blocking coercion hole in this type? See GHC.Tc.Solver.Canonical* Note [Equalities with incompatible kinds]Aghc-lib-parserIs there a blocking coercion hole in this coercion? See GHC.Tc.Solver.Canonical Note [Equalities with incompatible kinds]-ghc-lib-parser!role of the created coercion, "r"ghc-lib-parser:: phi1 ~N phi2ghc-lib-parser g1 :: phi1ghc-lib-parser g2 :: phi2ghc-lib-parser :: g1 ~r g2-ghc-lib-parserrole of the built coercion, "r"ghc-lib-parsert1 :: k1ghc-lib-parsert2 :: k2ghc-lib-parser :: t1 ~r t2-ghc-lib-parser :: t1 ~r t2ghc-lib-parser%:: s1 ~N s2, where s1 :: k1, s2 :: k2ghc-lib-parser:: t1 s1 ~r t2 s2Aghc-lib-parser original LCghc-lib-parsernew variable to map...ghc-lib-parser...to this lifted versionAghc-lib-parser Original LCghc-lib-parsernew variable to map...ghc-lib-parserto this coercion99##$$,,,,-@---------------------------------99999999999:::::::::;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999999::##,,,,A@@-------AAA--@--AAAAAAAAAA--A-A---@---AA-A----A-AAAA-AAAAAAAAAAA@@@@@AAAAA@@-@@@@@@@AAAA--@@-@@@@$$@@@A:::::::;;;;;;;;;;;-AAAAAAAAAAAAA@-@AAAAAAAAA-@@@@@@@;;AA@AAANone5Aghc-lib-parsertcMatchTy t1 t2) produces a substitution (over fvs(t1)) s such that s(t1) equals t2. The returned substitution might bind coercion variables, if the variable is an argument to a GADT constructor.Precondition: typeKind ty1 > typeKind ty2We don't pass in a set of "template variables" to be bound by the match, because tcMatchTy (and similar functions) are always used on top-level types, so we can bind any of the free variables of the LHS. See also Note [tcMatchTy vs tcMatchTyKi]Aghc-lib-parserLike A, but allows the kinds of the types to differ, and thus matches them as well. See also Note [tcMatchTy vs tcMatchTyKi]Aghc-lib-parserThis is similar to A, but extends a substitution See also Note [tcMatchTy vs tcMatchTyKi]Aghc-lib-parserLike A but over a list of types. See also Note [tcMatchTy vs tcMatchTyKi]Aghc-lib-parserLike A but over a list of types. See also Note [tcMatchTy vs tcMatchTyKi]Aghc-lib-parserLike A, but extending a substitution See also Note [tcMatchTy vs tcMatchTyKi]Aghc-lib-parserLike A, but extending a substitution See also Note [tcMatchTy vs tcMatchTyKi]Aghc-lib-parserThis one is called from the expression matcher, which already has a MatchEnv in handAghc-lib-parserGiven a list of pairs of types, are any two members of a pair surely apart, even after arbitrary type function evaluation and substitution?Aghc-lib-parserSimple unification of two types; all type variables are bindable Precondition: the kinds are already equalAghc-lib-parserLike A, but also unifies the kindsAghc-lib-parserUnify two types, treating type family applications as possibly unifying with anything and looking through injective type family applications. Precondition: kinds are the sameAghc-lib-parserLike A but also unifies the kindsAghc-lib-parsertcUnifyTysFG bind_tv tys1 tys2 attepts to find a substitution s% (whose domain elements all respond A to bind_tv ) such that s(tys1) and that of s(tys2) are equal, as witnessed by the returned Coercions. This version requires that the kinds of the types are the same, if you unify left-to-right.Aghc-lib-parserA is sort of inverse to -. In particular, if  liftCoMatch vars ty co == Just s, then liftCoSubst s ty == co , where == there means that the result of - has the same type as the original co; but may be different under the hood. That is, it matches a type against a coercion of the same "shape", and returns a lifting substitution which could have been used to produce the given coercion from the given type. Note that this function is incomplete -- it might return Nothing when there does indeed exist a possible lifting context.This function is incomplete in that it doesn't respect the equality in >. That is, it's possible that this will succeed for t1 and fail for t2, even when t1 > t2. That's because it depends on there being a very similar structure between the type and the coercion. This incompleteness shouldn't be all that surprising, especially because it depends on the structure of the coercion, which is a silly thing to do.The lifting context produced doesn't have to be exacting in the roles of the mappings. This is because any use of the lifting context will also require a desired role. Thus, this algorithm prefers mapping to nominal coercions where it can do so.Aghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetAghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot; in principle the template variables could be free in the targetAghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitutionAghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitutionAghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitutionAghc-lib-parsertemplate variablesghc-lib-parsertype substitution to extendghc-lib-parserTemplateghc-lib-parserTargetAghc-lib-parserTrue  =" do two-way unification; False  =: do one-way matching. See end of sec 5.2 from the paperAghc-lib-parserA regular one-shot (idempotent) substitution that unifies the erased types. See comments for AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANoneAghc-lib-parser>A choice of equality relation. This is separate from the type , because ,3 does not define a (non-trivial) equality relation.Aghc-lib-parserA predicate in the solver. The solver tries to prove Wanted predicates from Given ones.Bghc-lib-parser3Get the equality relation relevant for a pred type.'#AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBB'AAAAAABAAABBBBBBBAAAAAAABBBAAAABBBB#BB@None> ghc-lib-parser"Contains not only a collection of s but also a plethora of information relating to the compilation of a single file or GHC session ghc-lib-parser&Initialize the pretty-printing options ghc-lib-parser$Consolidated unit database built by  initUnits from the unit databases in C% and flags ('-ignore-package', etc.).=It also contains mapping from module names to actual Modules.Bghc-lib-parserA collection of files that must be deleted before ghc exits. The current collection is stored in an IORef in DynFlags, C.Bghc-lib-parser2Files that will be deleted at the end of runGhc(T)Bghc-lib-parser*Files that will be deleted the next time 4 is called, or otherwise at the end of the session.Bghc-lib-parserFlag in string formBghc-lib-parserFlag in internal formBghc-lib-parserExtra action to run when the flag is found Typically, emit a warning or errorBghc-lib-parser%In which ghc mode the flag has effectBghc-lib-parser+Flags for manipulating packages visibility.Bghc-lib-parser-package,  -package-idBghc-lib-parser  -hide-packageBghc-lib-parser%Flags for manipulating package trust.Bghc-lib-parser -trustBghc-lib-parser  -distrustBghc-lib-parser6Flags for manipulating the set of non-broken packages.Bghc-lib-parser -ignore-packageBghc-lib-parserRepresents the renaming that may be associated with an exposed package, e.g. the rns part of -package "foo (rns)".Here are some example parsings of the package flags (where a string literal is punned to be a : -package foo is ModRenaming True []-package foo () is ModRenaming False []-package foo (A) is ModRenaming False [(A, A)]-package foo (A as B) is ModRenaming False [(A, B)]-package foo with (A as B) is ModRenaming True [(A, B)]Bghc-lib-parser%Bring all exposed modules into scope?Bghc-lib-parser Bring module m into scope under name n.Bghc-lib-parserWe accept flags which make packages visible, but how they select the package varies; this data type reflects what selection criterion is used.Bghc-lib-parser-package, by  PackageNameBghc-lib-parser -package-id, by  Bghc-lib-parser-What to do in the link step, if there is one.Bghc-lib-parserDon't link at allBghc-lib-parserLink object code into a binaryBghc-lib-parserUse the in-memory dynamic linker (works for both bytecode and object code).Bghc-lib-parserLink objects into a dynamic lib (DLL on Windows, DSO on ELF platforms)Bghc-lib-parserLink objects into a static libBghc-lib-parserThe B tells us whether we're doing multi-module compilation (controlled via the GHC API) or one-shot (single-module) compilation. This makes a difference primarily to the GHC.Driver.Finder: in one-shot mode we look for interface files for imported modules, but in multi-module mode we look for source files in order to check whether they need to be recompiled.Bghc-lib-parser--make , GHCi, etc.Bghc-lib-parser  ghc -c Foo.hsBghc-lib-parserghc -M, see GHC.Driver.Finder for why we need thisBghc-lib-parser1The target code type of the compilation (if any).6Whenever you change the target, also make sure to set C to something sensible.B can be used to avoid generating any output, however, note that:If a program uses Template Haskell the typechecker may need to run code from an imported module. To facilitate this, code generation is enabled for modules imported by modules that use template haskell. See Note [-fno-code mode].Bghc-lib-parserGenerate C code.Bghc-lib-parser2Generate assembly using the native code generator.Bghc-lib-parser0Generate assembly using the llvm code generator.Bghc-lib-parserGenerate bytecode. (Requires B)Bghc-lib-parser*Don't generate any code. See notes above.Bghc-lib-parser!See Note [LLVM Configuration] in  GHC.SysTools.Bghc-lib-parserno SCC annotations addedBghc-lib-parser,top-level and nested functions are annotatedBghc-lib-parser"top-level functions annotated onlyBghc-lib-parser!exported functions annotated onlyBghc-lib-parserannotate call-sitesBghc-lib-parser2Edge weights to use when generating a CFG from CMMCghc-lib-parserN.B. It's important that this field is lazy since we load the LLVM configuration lazily. See Note [LLVM Configuration] in  GHC.SysTools.Cghc-lib-parser,Verbosity level: see Note [Verbosity levels]Cghc-lib-parserOptimisation levelCghc-lib-parser%How much debug information to produceCghc-lib-parserNumber of simplifier phasesCghc-lib-parserMax simplifier iterationsCghc-lib-parser+A prefix to report inlining decisions aboutCghc-lib-parserAdditional demand analysisCghc-lib-parserThe number of modules to compile in parallel in --make mode, where Nothing ==> compile as many in parallel as there are CPUs.Cghc-lib-parserEnable RTS timing statistics?Cghc-lib-parserThe heap size to set.Cghc-lib-parserMaximum number of bindings from the type envt to show in type error messagesCghc-lib-parserMaximum number of hole fits to show in typed hole error messagesCghc-lib-parserMaximum number of refinement hole fits to show in typed hole error messagesCghc-lib-parserMaximum level of refinement for refinement hole fits in typed hole error messagesCghc-lib-parserMaximum number of unmatched patterns to show in non-exhaustiveness warningsCghc-lib-parserSoft limit on the number of models the pattern match checker checks a pattern against. A safe guard against exponential blow-up.Cghc-lib-parserMultiplier for simplifier ticksCghc-lib-parserThreshold for SpecConstrCghc-lib-parser2Max number of specialisations for any one functionCghc-lib-parserMax number of specialisations for recursive types Not optional; otherwise ForceSpecConstr can diverge.Cghc-lib-parserBinary literals (e.g. strings) whose size is above this threshold will be dumped in a binary file by the assembler code generator (0 to disable)Cghc-lib-parserThreshold for LiberateCaseCghc-lib-parser%Arg count for lambda floating See Cghc-lib-parserMaximum number of arguments after lambda lifting a recursive function.Cghc-lib-parserMaximum number of arguments after lambda lifting a non-recursive function.Cghc-lib-parserLambda lift even when this turns a known call into an unknown call.Cghc-lib-parser4Align Cmm functions at this boundary or use default.Cghc-lib-parserSimplification history sizeCghc-lib-parserTypechecker maximum stack depthCghc-lib-parserNumber of iterations in the constraints solver Typically only 1 is neededCghc-lib-parserTarget home unit-idCghc-lib-parserUnit-id to instantiateCghc-lib-parserHow to instantiate C unitCghc-lib-parserWay flags from the command lineCghc-lib-parserThis is set by ( based on where its output is going.Cghc-lib-parser Override the C set by  . Set by -ddump-file-prefixCghc-lib-parserPath to store the .mix filesCghc-lib-parserthe -ffrontend-opt flags given on the command line, in *reverse* order that they're specified on the command line.Cghc-lib-parserplugins dynamically loaded after processing arguments. What will be loaded here is directed by pluginModNames. Arguments are loaded from pluginModNameOpts. The purpose of this field is to cache the plugins so they don't have to be loaded each time they are needed. See .Cghc-lib-parserstatic plugins which do not need dynamic loading. These plugins are intended to be added by GHC API users directly to this list.;To add dynamically loaded plugins through the GHC API see E instead.Cghc-lib-parserThe  -package-db flags given on the command line, In *reverse* order that they're specified on the command line. This is intended to be applied with the list of "initial" package databases derived from GHC_PACKAGE_PATH; see  getUnitDbRefs.Cghc-lib-parserThe -ignore-package flags from the command line. In *reverse* order that they're specified on the command line.Cghc-lib-parserThe -package and  -hide-package flags from the command-line. In *reverse* order that they're specified on the command line.Cghc-lib-parserThe -plugin-package-id flags from command line. In *reverse* order that they're specified on the command line.Cghc-lib-parserThe -trust and  -distrust flags. In *reverse* order that they're specified on the command line.Cghc-lib-parserFilepath to the package environment file (if overriding default)Cghc-lib-parser0Stack of unit databases for the target platform.This field is populated by  initUnits.H9 means the databases have never been read from disk. If  initUnits= is called again, it doesn't reload the databases from disk.Cghc-lib-parserSafe Haskell modeCghc-lib-parserMsgDoc output action: use GHC.Utils.Error instead of this if you canDghc-lib-parser8GHCi scripts specified by -ghci-script, in reverse orderDghc-lib-parserwhat kind of {- SCC -} to add automaticallyDghc-lib-parser(Machine dependent flags (-m stuff)Dghc-lib-parser8Run-time linker information (what options we need, etc.)Dghc-lib-parserRun-time compiler informationDghc-lib-parser0Max size, in bytes, of inline array allocations.Dghc-lib-parserOnly inline memcpy if it generates no more than this many pseudo (roughly: Cmm) instructions.Dghc-lib-parserOnly inline memset if it generates no more than this many pseudo (roughly: Cmm) instructions.Dghc-lib-parser/Reverse the order of error messages in GHC/GHCiDghc-lib-parser*Limit the maximum number of errors to showDghc-lib-parser9Unique supply configuration for testing build determinismDghc-lib-parser/Temporary: CFG Edge weights for fast iterationsDghc-lib-parserThe various Safe Haskell modesDghc-lib-parserinferred unsafeDghc-lib-parserdeclared and checkedDghc-lib-parserdeclared and checkedDghc-lib-parserdeclared and checkedDghc-lib-parserinferred as safeDghc-lib-parser-fno-safe-haskell stateDghc-lib-parserUsed to differentiate the scope an include needs to apply to. We have to split the include paths to avoid accidentally forcing recursive includes since -I overrides the system search paths. See #14312.Dghc-lib-parserAppend to the list of includes a path that shall be included using `-I` when the C compiler is called. These paths override system search paths.Dghc-lib-parserAppend to the list of includes a path that shall be included using `-iquote` when the C compiler is called. These paths only apply when quoted includes are used. e.g. #include "foo.h"Dghc-lib-parserConcatenate and flatten the list of global and quoted includes returning just a flat list of paths.Dghc-lib-parser "unbuild" a   from a  . This shouldn't be needed in the vast majority of code. But GHCi questionably uses this to produce a default  1 from which to compute a flags diff for printing.Dghc-lib-parserThe directory for this version of ghc in the user's app directory (typically something like ~.ghcx86_64-linux-7.6.3)Dghc-lib-parser6Will this target result in an object file on the disk?Dghc-lib-parserDoes this target retain *all* top-level bindings for a module, rather than just the exported bindings, in the TypeEnv and compiled code (if any)? In interpreted mode we do this, so that GHCi can call functions inside a module. In HscNothing mode we also do it, so that Haddock can get access to the GlobalRdrEnv for a module after typechecking it.Dghc-lib-parserAre we building with -fPIE or -fPIC enabled?Dghc-lib-parserCompute the path of the dynamic object corresponding to an object file.Dghc-lib-parserUsed by  to partially initialize a new   valueDghc-lib-parser The normal  . Note that they are not suitable for use in this form and must be fully initialized by  first.Dghc-lib-parserLike D but appends an extra newline.Dghc-lib-parserThe language extensions implied by the various language variants. When updating this be sure to update the flag documentation in docs users_guideexts.Dghc-lib-parserTest whether a  is setDghc-lib-parserSet a Dghc-lib-parserUnset a Dghc-lib-parserTest whether a  is setDghc-lib-parserSet a Dghc-lib-parserUnset a Dghc-lib-parserTest whether a  is setDghc-lib-parserSet a Dghc-lib-parserUnset a Dghc-lib-parserTest whether a  is set as fatalDghc-lib-parserMark a  as fatal (do not set the flag)Dghc-lib-parserMark a  as not fatalEghc-lib-parserTest whether a  is setEghc-lib-parserSet a Eghc-lib-parserUnset a Eghc-lib-parserSet or unset a 7, unless it has been explicitly set or unset before.Eghc-lib-parserSome modules have dependencies on others through the DynFlags rather than textual importsEghc-lib-parserIs the -fpackage-trust mode onEghc-lib-parser9Is Safe Haskell on in some way (including inference mode)Eghc-lib-parser(Is the Safe Haskell safe language in useEghc-lib-parser.Is the Safe Haskell safe inference mode activeEghc-lib-parser(Test if Safe Imports are on in some formEghc-lib-parserAre all direct imports required to be safe for this Safe Haskell mode? Direct imports are when the code explicitly imports a moduleEghc-lib-parserAre all implicit imports required to be safe for this Safe Haskell mode? Implicit imports are things in the prelude. e.g System.IO when print is used.Eghc-lib-parserA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offEghc-lib-parserA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offEghc-lib-parser3Retrieve the options corresponding to a particular opt_* field in the correct orderEghc-lib-parserGets the verbosity flag for the current verbosity level. This is fed to other tools, so GHC-specific verbosity flags like  -ddump-most are not includedEghc-lib-parserMake a module in home unitEghc-lib-parser+Test if the module comes from the home unitEghc-lib-parser Get home unitEghc-lib-parser Sets the  , to be appropriate to the optimisation levelEghc-lib-parserParse dynamic flags from a list of command line arguments. Returns the parsed  =, the left-over arguments, and a list of warnings. Throws a   if errors occurred during parsing (such as unknown flags or missing arguments).Eghc-lib-parserLike E but does not allow the package flags (-package, -hide-package, -ignore-package, -hide-all-packages, -package-db). Used to parse flags set in a modules pragma.Eghc-lib-parserParses the dynamically set flags for GHC. This is the most general form of the dynamic flag parser that the other methods simply wrap. It allows saying which flags are valid flags and indicating if we are parsing arguments from the command line or from a file pragma.Eghc-lib-parser!Write an error or warning to the  LogOutput.Eghc-lib-parserAll dynamic flags option strings without the deprecated ones. These are the user facing strings for enabling and disabling options.Eghc-lib-parserMake a list of flags for shell completion. Filter all available flags into two groups, for interactive GHC vs all other.Eghc-lib-parserThese -W flags can all be reversed with  -Wno-Eghc-lib-parserThese -f flags can all be reversed with  -fno-Eghc-lib-parserThese -f flags can all be reversed with  -fno-Eghc-lib-parserThese -X blah$ flags can all be reversed with -XNo blahEghc-lib-parserWarning groups.As all warnings are in the Weverything set, it is ignored when displaying to the user which group a warning is in.Eghc-lib-parserWarning group hierarchies, where there is an explicit inclusion relation.Each inner list is a hierarchy of warning groups, ordered from smallest to largest, where each group is a superset of the one before it.Separating this from E allows for multiple hierarchies with no inherent relation to be defined.3The special-case Weverything group is not included.Eghc-lib-parserGiven a  of a signature in the home library, find out how it is instantiated. E.g., the canonical form of A in  p[A=q[]:A] is q[]:A.Fghc-lib-parser1Resolve any internal inconsistencies in a set of  . Returns the consistent  6 as well as a list of warnings to report to the user.Fghc-lib-parser,Indicate if cost-centre profiling is enabledFghc-lib-parserAn empty FilesToCleanFghc-lib-parserInitialize the pretty-printing options using the default user styleEghc-lib-parser  to retrieve the options fromghc-lib-parser%Relevant record accessor: one of the opt_* accessorsghc-lib-parser#Correctly ordered extracted optionsEghc-lib-parserUpdated  -, left-over arguments, and list of warnings.Eghc-lib-parserUpdated  -, left-over arguments, and list of warnings.Eghc-lib-parservalid flags to match againstghc-lib-parser(are the arguments from the command line?ghc-lib-parsercurrent dynamic flagsghc-lib-parserarguments to parse  C DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF  BBBBBBBBBBBBEEE DDDDDDDDEEDDDDDDEEEEEDDDDDF C DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDBBBBBBBBBBBBBBBBBBBBBBDDDBBBBDBBBBBBDBBBBBBBBBBDBBBBBBBBBBBBBBBBBEEEEEFDEEEEEEDDDDDDDEEEEEEEEEEBBBBBBBBB DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDDDDDDDDDEEEEEEEBEEEEEEEEEEEEEEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFBBBBBBBBBBBBBBBBBBFDDDDDDD FBBBBBBBBBCQNone#$)k-ghc-lib-parserLog message intended for compiler developers No file/line/column stuffghc-lib-parserLog messages intended for end users. No file/line/column stuff.ghc-lib-parserSevWarning and SevError are used for warnings and errors o The message has a file/line/column heading, plus "warning:" or "error:", added by mkLocMessags o Output is intended for end usersghc-lib-parserFormat of a dumpDump formats are loosely defined: dumps may contain various additional headers and annotations and they may be partial. 2 is mainly a hint (e.g. for syntax highlighters).ghc-lib-parserHaskellghc-lib-parserCoreghc-lib-parserSTGghc-lib-parserByteCodeghc-lib-parserCmmghc-lib-parser Assembly codeghc-lib-parser C code/headerghc-lib-parser LLVM bytecodeghc-lib-parserUnstructured dumpghc-lib-parser Dump options7Dumps are printed on stdout by default except when the  field is set to True.When  is True or when `-ddump-to-file` is set, dumps are written into a file whose suffix is given in the  field.ghc-lib-parser?Must be dumped into a file, even if -ddump-to-file isn't setghc-lib-parser/Filename suffix used when dumped into a fileghc-lib-parserDefault action for G hookghc-lib-parserDefault action for G hookghc-lib-parser;Make a possibly annotated error message with location info.ghc-lib-parser5Make an unannotated error message with location info.Fghc-lib-parserCategorise error msgs by their importance. This is so each section can be rendered visually distinct. See Note [Error report] for where these come from.Fghc-lib-parserPrimary error msg.Fghc-lib-parser-Context e.g. "In the second argument of ...".Fghc-lib-parserSupplementary information, e.g. "Relevant bindings include ...".Fghc-lib-parserEverything is fineFghc-lib-parser%A problem, and some indication of whyFghc-lib-parser*If they aren't all valid, return the firstGghc-lib-parser!A long (multi-line) error messageGghc-lib-parser A short (one-line) error messageGghc-lib-parser;Variant that doesn't care about qualified/unqualified namesGghc-lib-parser!A long (multi-line) error messageGghc-lib-parser A short (one-line) error messageGghc-lib-parser;Variant that doesn't care about qualified/unqualified namesGghc-lib-parserA wrapper around G. First check whether the dump flag is set Do nothing if it is unsetGghc-lib-parserA wrapper around G. First check whether the dump flag is set Do nothing if it is unsetUnlike G, has a printer argumentGghc-lib-parser9Ensure that a dump file is created even if it stays emptyGghc-lib-parserCreate dump options from a Gghc-lib-parserTime a compilation phase.(When timings are enabled (e.g. with the -v2 flag), the allocations and CPU time used by the phase will be reported to stderr. Consider a typical usage: withTiming getDynFlags (text "simplify") force PrintTimings pass. When timings are enabled the following costs are included in the produced accounting,The cost of executing pass to a result r in WHNFThe cost of evaluating force r to WHNF (e.g. ())The choice of the force function depends upon the amount of forcing desired; the goal here is to ensure that the cost of evaluating the result is, to the greatest extent possible, included in the accounting provided by G. Often the pass already sufficiently forces its result during construction; in this case const () is a reasonable choice. In other cases, it is necessary to evaluate the result to normal form, in which case something like Control.DeepSeq.rnf is appropriate.To avoid adversely affecting compiler performance when timings are not requested, the result is only forced when timings are enabled.See Note [withTiming] for more.Gghc-lib-parser0Like withTiming but get DynFlags from the Monad.Gghc-lib-parserSame as G:, but doesn't print timings in the console (when given -vN, N >= 2 or -ddump-timings).See Note [withTiming] for more.Gghc-lib-parserSame as G:, but doesn't print timings in the console (when given -vN, N >= 2 or -ddump-timings0) and gets the DynFlags from the given Monad.See Note [withTiming] for more.Gghc-lib-parserLike G but with  rather then Gghc-lib-parserChecks if given F is a fatal warning.Gghc-lib-parser Helper for DGghc-lib-parser Helper for Dghc-lib-parseroptional annotationghc-lib-parserseverityghc-lib-parserlocationghc-lib-parsermessageGghc-lib-parserDynFlagsghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timedGghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timedGghc-lib-parserDynFlagsghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timedGghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timedFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFFFFFFGFFFFFGFFFFFFFGFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG?None?U ghc-lib-parser Unit database ghc-lib-parser-Update component ID details from the databaseGghc-lib-parserSubstitution on module variables, mapping module names to module identifiers.Gghc-lib-parser!The result of performing a lookupGghc-lib-parser-Found the module uniquely, nothing else to doGghc-lib-parser,Multiple modules with the same name in scopeGghc-lib-parserNo modules found, but there were some hidden ones with an exact name match. First is due to package hidden, second is due to module being hiddenGghc-lib-parserNo modules found, but there were some unusable ones with an exact name matchGghc-lib-parser6Nothing found, here are some suggested different namesGghc-lib-parser"The reason why a unit is unusable.Gghc-lib-parserWe ignored it explicitly using -ignore-package.Gghc-lib-parserThis unit transitively depends on a unit that was never present in any of the provided databases.Gghc-lib-parserThis unit transitively depends on a unit involved in a cycle. Note that the list of   reports the direct dependencies of this unit that (transitively) depended on the cycle, and not the actual cycle itself (which we report separately at high verbosity.)Gghc-lib-parser;This unit transitively depends on a unit which was ignored.Gghc-lib-parserThis unit transitively depends on a unit which was shadowed by an ABI-incompatible unit.Gghc-lib-parser A mapping of   to >. This list is adjusted so that only valid units are here. 5 reflects what was stored *on disk*, except for the trusted flag, which is adjusted at runtime. (In particular, some units in this map may have the exposed flag be G.)Gghc-lib-parserThe set of transitively reachable units according to the explicitly provided command line arguments. A fully instantiated VirtUnit may only be replaced by a RealUnit from this set. See Note [VirtUnit to RealUnit improvement]Gghc-lib-parser A mapping of  to  . This is used when users refer to packages in Backpack includes.Gghc-lib-parser7A mapping from database unit keys to wired in unit ids.Gghc-lib-parserA mapping from wired in unit ids to unit keys from the database.Gghc-lib-parserThe units we're going to link in eagerly. This list should be in reverse dependency order; that is, a unit is always mentioned before the units it depends on.Gghc-lib-parserUnits which we explicitly depend on (from a command line flag). We'll use this to generate version macros.Gghc-lib-parserThis is a full map from  to all modules which may possibly be providing it. These providers may be hidden (but we'll still want to report them in error messages), or it may be an ambiguous import.Gghc-lib-parser A map, like G$, but controlling plugin visibility.Gghc-lib-parserA map saying, for each requirement, what interfaces must be merged together when we use them. For example, if our dependencies are p[A=] and q[A=,B=r[C=]:B]*, then the interfaces to merge for A are  p[A=]:A, q[A=,B=r[C=]:B]:A and  r[C=]:C.?There's an entry in this map for each hole in our home library.Gghc-lib-parser0Indicate if we can instantiate units on-the-fly.This should only be true when we are type-checking an indefinite unit. See Note [About units] in GHC.Unit.Gghc-lib-parserUnit state is all stored in  , including the details of all units, which units are exposed, and which modules they provide.The unit state is computed by G, and kept in DynFlags. It is influenced by various command-line flags:-package  and -package-id  cause  to become exposed. If -hide-all-packages was not specified, these commands also cause all other packages with the same name to become hidden.-hide-package  causes  to become hidden.=(there are a few more flags, check below for their semantics),The unit state has the following properties.Let  exposedUnits/ be the set of packages thus exposed. Let depExposedUnits be the transitive closure from  exposedUnits of their dependencies.When searching for a module from a preload import declaration, only the exposed modules in  exposedUnits are valid.When searching for a module from an implicit import, all modules from depExposedUnits are valid.When linking in a compilation manager mode, we link in packages the program depends on (the compiler knows this list by the time it gets to the link step). Also, we link in all packages which were mentioned with preload -package flags on the command-line, or are a transitive dependency of same, or are "base"/"rts". The reason for this is that we might need packages which don't contain any Haskell modules, and therefore won't be discovered by the normal mechanism of dependency tracking.Given a module name, there may be multiple ways it came into scope, possibly simultaneously. This data type tracks all the possible ways it could have come into scope. Warning: don't use the record functions, they're partial!Gghc-lib-parserModule is hidden, and thus never will be available for import. (But maybe the user didn't realize), so we'll still keep track of these modules.)Gghc-lib-parser6Module is unavailable because the package is unusable.Gghc-lib-parser7Module is public, and could have come from some places.Gghc-lib-parser Just False) means that this module is in someone's exported-modules$ list, but that package is hidden;  Just True means that it is available; Nothing means neither applies.Gghc-lib-parserIs the module available from a reexport of an exposed package? There could be multiple.Gghc-lib-parser maps to q():A.Hghc-lib-parserSubstitutes holes in a  , suitable for renaming when an include occurs; see Note [Representation of module/name variable].p[A=] maps to p[A=] with A=.Hghc-lib-parserLike H, but requires only ClosureUnitInfoMap so it can be used by GHC.Unit.State.Hghc-lib-parser(Like 'renameHoleUnit, but requires only ClosureUnitInfoMap so it can be used by GHC.Unit.State.Hghc-lib-parser Injects an  to   (see also H.\[ZY GGG GGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHH GGGGGGGGGGGG GGG GGGGGGGGGGGGGHG HGGHGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHGGGGGGGHHHHHH GGHHHGGNone5>W\[ZY     GGG GGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHNonea Hghc-lib-parserUsed when a temp file is created. This determines which component Set of FilesToClean will get the temp fileHghc-lib-parserA file with lifetime TFL_CurrentModule will be cleaned up at the end of upweep_modHghc-lib-parserA file with lifetime TFL_GhcSession will be cleaned up at the end of runGhc(T)Hghc-lib-parserDelete all files in filesToClean dflags.Hghc-lib-parserDelete all files in filesToClean dflags. That have lifetime TFL_CurrentModule. If a file must be cleaned eventually, but must survive a cleanCurrentModuleTempFiles, ensure it has lifetime TFL_GhcSession.Hghc-lib-parser7Ensure that new_files are cleaned on the next call of H or H, depending on lifetime. If any of new_files are already tracked, they will have their lifetime updated.Hghc-lib-parserUpdate the lifetime of files already being tracked. If any files are not being tracked they will be discarded.Hghc-lib-parserCreate and use a temporary directory in the system standard temporary directory.Behaves exactly the same as H, except that the parent temporary directory will be that returned by ȏ.Hghc-lib-parser%Create and use a temporary directory.Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: 4withTempDirectory "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.Hghc-lib-parserDirectory name template. See  openTempFile.ghc-lib-parser#Callback that can use the directoryHghc-lib-parser)Temp directory to create the directory inghc-lib-parserDirectory name template. See  openTempFile.ghc-lib-parser#Callback that can use the directory HHHHHHHHHHHHH HHHHHHHHHHHHHNonet"%Hghc-lib-parserAn mtl-style class for monads that support parsing-related operations. For example, sometimes we make a second pass over the parsing results to validate, disambiguate, or rearrange them, and we do so in the PV monad which cannot consume input but can report parsing errors, check for extension bits, and accumulate parsing annotations. Both P and PV are instances of MonadP.MonadP grants us convenient overloading. The other option is to have separate operations for each monad: addErrorP vs addErrorPV, getBitP vs getBitPV, and so on.Hghc-lib-parserAdd a non-fatal error. Use this when the parser can produce a result despite the error.#For example, when GHC encounters a forall in a type, but -XExplicitForAll$ is disabled, the parser constructs ForAllTy as if -XExplicitForAll= was enabled, adding a non-fatal error to the accumulator.Control flow wise, non-fatal errors act like warnings: they are added to the accumulator and parsing continues. This allows GHC to report more than one parse error per file.Hghc-lib-parser)Add a warning to the accumulator. Use J! to get the accumulated warnings.Hghc-lib-parserAdd a fatal error. This will be the last error reported by the parser, and the parser will not produce any result, ending in a I state.Hghc-lib-parser5Check if a given flag is currently set in the bitmap.Hghc-lib-parserGiven a location and a list of AddAnn, apply them all to the location.Hghc-lib-parserVarious boolean flags, mostly language extensions, that impact lexing and parsing. Note that a handful of these can change during lexing/parsing.Hghc-lib-parserIf this is enabled, '{- LINE ... - }' and '{- COLUMN ... -}' update the internal position. Otherwise, those pragmas are lexed as tokens of their own.Hghc-lib-parser!The parsing monad, isomorphic to StateT PState Maybe.Hghc-lib-parserHaddock comment as produced by the lexer. These are accumulated in H and then processed in GHC.Parser.PostProcess.Haddock.Hghc-lib-parserThe subset of the   used by the parser. See J or J for ways to construct this.Hghc-lib-parserunit currently being compiledHghc-lib-parserbitmap of permitted extensionsHghc-lib-parserThe result of running a parser.Ighc-lib-parserThe parser has consumed a (possibly empty) prefix of the input and produced a result. Use J; to check for accumulated warnings and non-fatal errors.Ighc-lib-parserThe parser has consumed a (possibly empty) prefix of the input and failed.Jghc-lib-parser (|Jghc-lib-parser |)Jghc-lib-parser --Jghc-lib-parser -<>-Jghc-lib-parser*Used when the lexer can't make sense of itJghc-lib-parserend of file tokenJghc-lib-parsersomething beginning -- |Jghc-lib-parsersomething beginning -- ^Jghc-lib-parsersomething beginning -- $Jghc-lib-parsera section headingJghc-lib-parser(doc options (prune, ignore-exports, etc)Jghc-lib-parsercomment starting by "--"Jghc-lib-parsercomment in {- -}Jghc-lib-parser1Given exactly the information needed, set up the HJghc-lib-parser0Extracts the flag information needed for parsingJghc-lib-parserCreates a parse state from a   valueJghc-lib-parserCreates a parse state from a H valueJghc-lib-parserGet a bag of the errors that have been accumulated so far. Does not take -Werror into account.Jghc-lib-parserGet the warnings and errors accumulated so far. Does not take -Werror into account.Ighc-lib-parser;The resulting parsing state. Can be used to resume parsing.ghc-lib-parserThe resulting value.Ighc-lib-parserThe parsing state right before failure, including the fatal parse error. J and J* must return a non-empty bag of errors.Jghc-lib-parserwarnings flags enabledghc-lib-parser%permitted language extensions enabledghc-lib-parser'id of the unit currently being compiledghc-lib-parserare safe imports on?ghc-lib-parserkeeping Haddock comment tokensghc-lib-parserkeep regular comment tokensghc-lib-parserIf this is enabled, '{- LINE ... - }' and '{- COLUMN ... -}' update the internal position kept by the parser. Otherwise, those pragmas are lexed as I and I tokens.HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIJJHHHHHJJJHHHHHHJJJJJJJJJJJJJJJJJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHJJJJHHHHHNone5<=z4Jghc-lib-parserAtomically update the reference. Does not force the evaluation of the new variable contents. For strict update, use J.Jghc-lib-parserStrict variant of J.Jghc-lib-parser2Perform a computation with a different environmentJghc-lib-parser1Perform a computation with an altered environment946$#"TSXs JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJsJJJJJJ|None35=,ghc-lib-parserAn , is a tyvar/type pair representing an equality made in rejigging a GADT constructor,ghc-lib-parserData Constructor Representation See Note [Data constructor workers and wrappers],ghc-lib-parserA data constructorw : w, w,w,ghc-lib-parserThe "full signature" of the , returns, in order:1) The result of K2) The result of ,3) The non-dependent GADT equalities. Dependent GADT equalities are implied by coercion variables in return value (2).4) The other constraints of the data constructor type, excluding GADT equalities&5) The original argument types to the , (i.e. before any change of the representation of the type) with linearity annotations#6) The original result type of the ,,ghc-lib-parserThe "stupid theta" of the , , such as  data Eq a in: data Eq a => T a = ...,ghc-lib-parserReturns just the instantiated value argument types of a ,, (excluding dictionary args),ghc-lib-parser-The labels for the fields of this particular ,,ghc-lib-parser*Source-level arity of the data constructor,ghc-lib-parser#s for the type variables of the constructor, in the order the user wrote them,ghc-lib-parserThe type variables of the constructor, in the order the user wrote them,ghc-lib-parserThe existentially-quantified type/coercion variables of the constructor including dependent (kind-) GADT equalities,ghc-lib-parserThe type constructor that we are building via this data constructor,ghc-lib-parserThe  of the ,+, giving it a unique, rooted identificationJghc-lib-parserSource Unpackedness$What unpackedness the user requestedJghc-lib-parser{- UNPACK  -} specifiedJghc-lib-parser{- NOUNPACK  -} specifiedJghc-lib-parserno unpack pragmaJghc-lib-parserSource Strictness)What strictness annotation the user wroteJghc-lib-parser Lazy, ie '~'Jghc-lib-parser Strict, ie !Jghc-lib-parserno strictness annotationJghc-lib-parserHaskell Implementation BangBangs of data constructor arguments as generated by the compiler after consulting HsSrcBang, flags, etc.Jghc-lib-parser(Lazy field, or one with an unlifted typeKghc-lib-parserStrict but not unpacked fieldKghc-lib-parser;Strict and unpacked field co :: arg-ty ~ product-ty HsBangKghc-lib-parserHaskell Source BangBangs on data constructor arguments as the user wrote them in the source code.(HsSrcBang _ SrcUnpack SrcLazy) and #(HsSrcBang _ SrcUnpack NoSrcStrict) (without StrictData) makes no sense, we emit a warning (in checkValidDataCon) and treat it like !(HsSrcBang _ NoSrcUnpack SrcLazy)Kghc-lib-parserMake a non-dependent ,Kghc-lib-parserSubstitute in an ,. Precondition: if the LHS of the EqSpec is mapped in the substitution, it is mapped to a type variable, not a full type.Kghc-lib-parserFilter out any s mentioned in an ,.Kghc-lib-parserCompare strictness annotationsKghc-lib-parserBuild a new data constructorKghc-lib-parserThe tag used for ordering ,sKghc-lib-parserThe original type constructor used in the definition of this data constructor. In case of a data family instance, that will be the family type constructor.Kghc-lib-parserThe representation type of the data constructor, i.e. the sort type that will represent values of this type at runtimeKghc-lib-parser Should the , be presented infix?Kghc-lib-parser b -> T [a] rather than: 3T :: forall a c. forall b. (c~[a]) => a -> b -> T cThe type variables are quantified in the order that the user wrote them. See )Note [DataCon user type variable binders].NB: If the constructor is part of a data instance, the result type mentions the family tycon, not the internal one.Kghc-lib-parserFinds the instantiated types of the arguments required to construct a , representation NB: these INCLUDE any dictionary args but EXCLUDE the data-declaration context, which is discarded It's all post-flattening etc; this is a representation typeKghc-lib-parserReturns the argument types of the wrapper, excluding all dictionary arguments and without substituting for any type variablesKghc-lib-parserReturns constraints in the wrapper type, other than those in the dataConEqSpecKghc-lib-parserReturns the arg types of the worker, including *all* non-dependent evidence, after any flattening has been done and without substituting for any type variablesKghc-lib-parser The string package:module.name identifying a constructor, which is attached to its info table and used by the GHCi debugger and the heap profilerKghc-lib-parserVanilla ,8s are those that are nice boring Haskell 98 constructorsKghc-lib-parserShould this DataCon be allowed in a type even without -XDataKinds? Currently, only Lifted & UnliftedKghc-lib-parserWere the type variables of the data con written in a different order than the regular order (universal tyvars followed by existential tyvars)?This is not a cheap test, so we minimize its use in GHC as much as possible. Currently, its only call site in the GHC codebase is in  mkDataConRep in MkId , and so K is only called at most once during a data constructor's lifetime.Kghc-lib-parserExtract the type constructor, type argument, data constructor and it's representation4 argument types from a type if it is a product type.Precisely, we return Just for any type that is all of:$Concrete (i.e. constructors visible)Single-constructorNot existentially quantifiedWhether the type is a data type or a newtypeKghc-lib-parser"Is the constructor declared infix?ghc-lib-parser#TyConRepName for the promoted TyConghc-lib-parser(Strictness/unpack annotations, from userghc-lib-parserField labels for the constructor, if it is a record, otherwise emptyghc-lib-parser Universals.ghc-lib-parser Existentials.ghc-lib-parser User-written #/s. These must be Inferred/Specified. See Note [TyVarBinders in DataCons]ghc-lib-parserGADT equalities ghc-lib-parser0Theta-type occurring before the arguments proper ghc-lib-parserOriginal argument types ghc-lib-parserOriginal result type ghc-lib-parserSee comments on 6 ghc-lib-parserRepresentation type constructorghc-lib-parserConstructor tagghc-lib-parser:The "stupid theta", context of the data declaration e.g. data Eq a => T a ...ghc-lib-parser Worker Idghc-lib-parserRepresentationKghc-lib-parserA datacon with no existentials or equality constraints However, it can have a dcTheta (notably it can be a class dictionary, with superclasses)ghc-lib-parserInstantiated at these typesKghc-lib-parserA product type, perhaps&&&&&&&,,KKKKKKK,,,,,,,,,,,,JJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK,,KKKKKKKJJJJJJJJKKJJKKJJJ,KKKKKKK&&&&&&&KKK,,KKK,KKKKK,K,,KK,KKKK,K,KKK,KKKKKKKKKKKKKK,KKKKKKKKKKKNone? Kghc-lib-parserGets rid of the stuff that prevents us from understanding the runtime representation of a type. Including: 1. Casts 2. Newtypes 3. Foralls 4. Synonyms But not type/data families, because we don't have the envs to hand.Kghc-lib-parser True if the type has zero width.Kghc-lib-parserGiven the arguments of a sum type constructor application, return the unboxed sum rep type.E.g.( Int | Maybe Int | ( Int, Float ) #)We call `ubxSumRepType [ [IntRep], [LiftedRep], [IntRep, FloatRep] ]`, which returns [WordSlot, PtrSlot, WordSlot, FloatSlot]INVARIANT: Result slots are sorted (via Ord SlotTy), except that at the head of the list we have the slot for the tag.Kghc-lib-parser,Discovers the primitive representation of a . Returns a list of 6: it's a list because of the possibility of no runtime representation (void) or multiple (unboxed tuple/sum) See also Note [Getting from RuntimeRep to PrimRep]Kghc-lib-parserLike K*, but assumes that there is precisely one 6 output; an empty list of PrimReps becomes a VoidRep. This assumption holds after unarise, see Note [Post-unarisation invariants]. Before unarise it may or may not hold. See also Note [RuntimeRep and PrimRep] and Note [VoidRep]Kghc-lib-parser%Find the runtime representation of a . Defined here to avoid module loops. Returns a list of the register shapes necessary. See also Note [Getting from RuntimeRep to PrimRep]Kghc-lib-parserLike K3, but assumed that there is precisely zero or one 6 output See also Note [Getting from RuntimeRep to PrimRep] and Note [VoidRep]Kghc-lib-parser7Take a type of kind RuntimeRep and extract the list of 6 that it encodes. See also Note [Getting from RuntimeRep to PrimRep]Kghc-lib-parserConvert a PrimRep back to a Type. Used only in the unariser to give types to fresh Ids. Really, only the type's representation matters. See also Note [RuntimeRep and PrimRep]+666666666666666666KKKKKKKKKKKKKKKKKKKKKKKKK+KKKKKKKKK666666666666666666KKKKKKKKKKKKKKKKNone#$>YKghc-lib-parserThe depth of the wrapped K encodes the arity at which it is safe to unleash. Better construct this through L1. See Note [Understanding DmdType and StrictSig]Kghc-lib-parserDivergence lattice. Models a subset lattice of the following exhaustive set of divergence results: nnontermination (e.g. loops)ithrows imprecise exceptionpthrows precise exceptioncconverges (reduces to WHNF)The different lattice elements correspond to different subsets, indicated by juxtaposition of indicators (e.g. nc definitely doesn't throw an exception, and may or may not reduce to WHNF).  Dunno (nipc) | ExnOrDiv (nip) | Diverges (ni) %As you can see, we don't distinguish n and i. See Note [Precise exceptions and strictness analysis] for why p is so special compared to i.Kghc-lib-parser5Definitely throws an imprecise exception or diverges.Kghc-lib-parserDefinitely throws a *precise* exception, an imprecise exception or diverges. Never converges, hence L! See scenario 1 in Note [Precise exceptions and strictness analysis].Kghc-lib-parser7Might diverge, throw any kind of exception or converge.Lghc-lib-parserAbstract counting of usagesLghc-lib-parserDomain for genuine usageLghc-lib-parser?Call demand for absence. Used only for values of function typeLghc-lib-parserProduct. Used only for values of product type See Note [Don't optimise UProd(Used) to Used]Invariant: Not all components are Abs (in that case, use UHead)Lghc-lib-parserMay be used but its sub-components are definitely *not* used. For product types, UHead is equivalent to U(AAA); see mkUProd./UHead is needed only to express the demand of  and 'case'? which are polymorphic; i.e. the scrutinised value is of type a rather than a product type. That's why we can't use UProd [A,A,A]Since (UCall _ Abs) is ill-typed, UHead doesn't make sense for lambdasLghc-lib-parserMay be used and its sub-components may be used. (top of the lattice)Lghc-lib-parserVanilla strictness domainLghc-lib-parser Wraps the L with a one-shot call demand: d -> C1(d).Lghc-lib-parsermkCallDmds n d returns C1(C1...(C1 d)) where there are n C1's.Lghc-lib-parserTrue if the result indicates that evaluation will not return. See Note [Dead ends].Lghc-lib-parser%Compute the least upper bound of two K*s elicited /by the same incoming demand/!Lghc-lib-parserThe demand type of doing nothing (lazy, absent, no Divergence information). Note that it is 'not' the top of the lattice (which would be "may use everything"), so it is (no longer) called topDmdType. (SG: I agree, but why is it still L then?)Lghc-lib-parserWhen e is evaluated after executing an IO action that may throw a precise exception, we act as if there is an additional control flow path that is taken if e throws a precise exception. The demand type of this control flow path * is lazy and absent (L/) in all free variables and arguments * has L K, result So we can simply take a variant of L, ɏ . Why not L? Because then the result of e can never be L! That means failure to drop dead-ends, see #18086. See Note [Precise exceptions and strictness analysis]Lghc-lib-parserTurns a K computed for the particular  into a K unleashable at that arity. See Note [Understanding DmdType and StrictSig]Lghc-lib-parser Add extra (L7) arguments to a strictness signature. In contrast to L, this prepends8 additional argument demands. This is used by FloatOut.Lghc-lib-parserWe are expanding (x y. e) to (x y z. e z) or reducing from the latter to the former (when the Simplifier identifies a new join points, for example). In contrast to L, this appends extra arg demands if necessary. This works by looking at the K (which was produced under a call demand for the old arity) and trying to transfer as many facts as we can to the call demand of new arity. An arity increase (resulting in a stronger incoming demand) can retain much of the info, while an arity decrease (a weakening of the incoming demand) must fall back to a conservative default.Lghc-lib-parserTrue if the signature diverges or throws an exception in a saturated call. See Note [Dead ends].Lghc-lib-parserReturns true if an application to n args would diverge or throw an exception. See Note [Unsaturated applications] and Note [Dead ends].Lghc-lib-parserRemove all 1* information (but not C1 information) from the demandLghc-lib-parserRemove all 1* information (but not C1 information) from the strictness signatureKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLKLLLLLKLLLKKKKLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLNone Mghc-lib-parserWord offset, or word countMghc-lib-parserStandardFormInfo tells whether this thunk has one of a small number of standard formsMghc-lib-parser8An ArgDescr describes the argument pattern of a functionMghc-lib-parserWe represent liveness bitmaps as a Bitmap (whose internal representation really is a bitmap). These are pinned onto case return vectors to indicate the state of the stack for the garbage collector.In the compiled program, liveness bitmaps that fit inside a single word (StgWord) are stored as a single word, while larger bitmaps are stored as a pointer to an array of words.Mghc-lib-parserInformation about an identifier, from the code generator's point of view. Every identifier is bound to a LambdaFormInfo in the environment, which gives the code generator enough info to be able to tail call or return that identifier.Mghc-lib-parser9Maps names in the current module to their LambdaFormInfosMghc-lib-parserCodegen-generated Id infos, to be passed to downstream via interfaces.This stuff is for optimization purposes only, they're not compulsory.When CafInfo of an imported Id is not known it's safe to treat it as CAFFY.When LambdaFormInfo of an imported Id is not known it's safe to treat it as `LFUnknown True` (which just says "it could be anything" and we do slow entry).See also Note [Conveying CAF-info and LFInfo between modules] above.Mghc-lib-parserExported Non-CAFFY closures in the current module. Everything else is either not exported of CAFFY.Mghc-lib-parser;LambdaFormInfos of exported closures in the current module.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNoneϕMghc-lib-parserTrue <=> This is a static closure. Affects how we garbage-collect it. Static closure have an extra static link field at the end. Constructors do not have a static variant; see Note [static constructors]Mghc-lib-parserA description of the layout of a closure. Corresponds directly to the closure types in includes/rts/storage/ClosureTypes.h.Mghc-lib-parserByte offset, or byte countMghc-lib-parserRound up the given byte count to the next byte count that's a multiple of the machine's word size.Mghc-lib-parser Round up base to a multiple of size.Mghc-lib-parser7Convert the given number of words to a number of bytes.This function morally has type WordOff -> ByteOff , but uses Num a to allow for overloading.Mghc-lib-parserFirst round the given byte count up to a multiple of the machine's word size and then convert the result to words.Mghc-lib-parserHalf word size in bytesMghc-lib-parserSize of a closure header (StgHeader in includes/rts/storage/Closures.h)Mghc-lib-parserSize of the profiling part of a closure header (StgProfHeader in includes/rts/storage/Closures.h)Mghc-lib-parser(The total size of the closure, in words.Mghc-lib-parserThe byte offset into the card table of the card for a given elementMghc-lib-parser>Convert a number of elements to a number of cards, rounding upMghc-lib-parser"The size of a card table, in bytesMghc-lib-parser"The size of a card table, in wordsMghc-lib-parser%Derives the RTS closure type from an MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM~None ,ghc-lib-parserA constructor-like thingMghc-lib-parserNumber of argumentsMghc-lib-parser"Names of fields used for selectorsMghc-lib-parserReturns just the instantiated value argument types of a ,, (excluding dictionary args)Mghc-lib-parser# s for the type variables of the ,. For pattern synonyms, this will always consist of the universally quantified variables followed by the existentially quantified type variables. For data constructors, the situation is slightly more complicated@see )Note [DataCon user type variable binders] in GHC.Core.DataCon.Mghc-lib-parser0Existentially quantified type/coercion variablesMghc-lib-parserThe "stupid theta" of the , , such as  data Eq a in: data Eq a => T a = ...It is empty for ,$ as they do not allow such contexts.Mghc-lib-parser Returns the # of the wrapper. This is also known as the builder in some contexts. The value is Nothing only in the case of unidirectional pattern synonyms.Mghc-lib-parser7Returns the strictness information for each constructorMghc-lib-parser%Returns the type of the whole patternMghc-lib-parserThe "full signature" of the , returns, in order:,1) The universally quantified type variables72) The existentially quantified type/coercion variables3) The equality specification;4) The provided theta (the constraints provided by a match)<5) The required theta (the constraints required for a match)6) The original argument types (i.e. before any change of the representation of the type)7) The original result typeMghc-lib-parser5Extract the type for any given labelled field of the ,Mghc-lib-parser-The ConLikes that have *all* the given fields,,,,MMMMMMMMMMMMM,,,MMMMM,MMMMMMMMNone%3?8)Mghc-lib-parserA clone of the N0 type but allowing annotation at every tree nodeNghc-lib-parserA clone of the O0 type but allowing annotation at every tree nodeNghc-lib-parserA clone of the O0 type but allowing annotation at every tree nodeNghc-lib-parser;Annotated core: allows annotation at every node in the treeNghc-lib-parser Binders are tagged with a tNghc-lib-parser$Case alternatives where binders are NsNghc-lib-parser!Binding groups where binders are NsNghc-lib-parser'Argument expressions where binders are NsNghc-lib-parserExpressions where binders are NsNghc-lib-parserThe common case for the type of binders and variables when we are manipulating the Core language within GHCNghc-lib-parserN& says when unfolding should take placeNghc-lib-parser Records the  unfolding of an identifier, which is approximately the form the identifier would have if we substituted its definition in for the identifier. This type should be treated as abstract everywhere except in GHC.Core.UnfoldNghc-lib-parser+We have no information about the unfolding.Nghc-lib-parser:We have no information about the unfolding, because this # came from an hi-boot1 file. See Note [Inlining and hs-boot files] in GHC.CoreToIface for what this is used for.Nghc-lib-parser%It ain't one of these constructors.  OtherCon xs also indicates that something has been evaluated and hence there's no point in re-evaluating it.  OtherCon [] is used even for non-data-type values to indicated evaluated-ness. Notably: 1data C = C !(Int -> Int) case x of { C f -> ... }Here, f gets an  OtherCon [] unfolding.Nghc-lib-parser;An unfolding with redundant cached information. Parameters:uf_tmpl: Template used to perform unfolding; NB: Occurrence info is guaranteed correct: see Note [OccInfo in unfoldings and rules]'uf_is_top: Is this a top level binding? uf_is_value:  exprIsHNF* template (cached); it is ok to discard a  on this variableuf_is_work_free: Does this waste only a little work if we expand it inside an inlining? Basically this is a cached version of exprIsWorkFree!uf_guidance: Tells us about the size of the unfolding templateNghc-lib-parser Rule optionsNghc-lib-parserTarget platformNghc-lib-parser-Enable more advanced numeric constant foldingNghc-lib-parserCut down precision of Rational values to that of Float/Double if disabledNghc-lib-parserA N is:"Local" if the function it is a rule for is defined in the same module as the rule itself."Orphan" if nothing on the LHS is defined in the same module as the rule itselfNghc-lib-parserBuilt-in rules are used for constant folding and suchlike. They have no free variables. A built-in rule is always visible (there is no such thing as an orphan built-in rule.)Nghc-lib-parser1Name of the rule, for communication with the userNghc-lib-parserWhen the rule is activeNghc-lib-parser Name of the  at the head of this ruleNghc-lib-parser7Name at the head of each argument to the left hand sideNghc-lib-parserVariables quantified overNghc-lib-parserLeft hand side argumentsNghc-lib-parserRight hand side of the rule Occurrence info is guaranteed correct See Note [OccInfo in unfoldings and rules]Nghc-lib-parserTrue  = this rule is auto-generated (notably by Specialise or SpecConstr) False  = generated at the user's behest See Note [Trimming auto-rules] in GHC.Iface.Tidy% for the sole purpose of this field.Nghc-lib-parser  the rule was defined in, used to test if we should see an orphan rule.Nghc-lib-parser%Whether or not the rule is an orphan.Nghc-lib-parserTrue iff the fn at the head of the rule is defined in the same module as the rule and is not an implicit # (like a record selector, class operation, or data constructor). This is different from N, where a rule can avoid being an orphan if *any* Name in LHS of the rule was defined in the same module as the rule.Nghc-lib-parserNumber of arguments that N1 consumes, if it fires, including type argumentsNghc-lib-parserThis function does the rewrite. It given too many arguments, it simply discards them; the returned N is just the rewrite of N applied to the first N argsNghc-lib-parser?A full rule environment which we can apply rules from. Like a N, but it also includes the set of visible orphans we use to filter out orphan rules which are not visible (even though we can see them...)Nghc-lib-parserGathers a collection of Ns. Maps (the name of) an # to its rulesNghc-lib-parserIs this instance an orphan? If it is not an orphan, contains an ? witnessing the instance's non-orphanhood. See Note [Orphans]Nghc-lib-parserGoverns the kind of expression that the tick gets placed on when annotating for example using mkTick. If we find that we want to put a tickish on an expression ruled out here, we try to float it inwards until we find a suitable expression.Nghc-lib-parserPlace ticks exactly on run-time expressions. We can still move the tick through pure compile-time constructs such as other ticks, casts or type lambdas. This is the most restrictive placement rule for ticks, as all tickishs have in common that they want to track runtime processes. The only legal placement rule for counting ticks.Nghc-lib-parserAs  PlaceRuntime, but we float the tick through all lambdas. This makes sense where there is little difference between annotating the lambda and annotating the lambda's code.Nghc-lib-parserIn addition to floating through lambdas, cost-centre style tickishs can also be moved from constructors, non-function variables and literals. For example: let x = scc ... C (scc ... y) (scc ... 3) in ...Neither the constructor application, the variable or the literal are likely to have any cost worth mentioning. And even if y names a thunk, the call would not care about the evaluation context. Therefore removing all annotations in the above example is safe.Nghc-lib-parserSpecifies the scoping behaviour of ticks. This governs the behaviour of ticks that care about the covered code and the cost associated with it. Important for ticks relating to profiling.Nghc-lib-parserNo scoping: The tick does not care about what code it covers. Transformations can freely move code inside as well as outside without any additional annotation obligationsNghc-lib-parserSoft scoping: We want all code that is covered to stay covered. Note that this scope type does not forbid transformations from happening, as long as all results of the transformations are still covered by this tick or a copy of it. For example let x = tick ...6 (let y = foo in bar) in baz ===> let x = tick ... bar; y = tick ... foo in bazIs a valid transformation as far as "bar" and "foo" is concerned, because both still are scoped over by the tick.Note though that one might object to the "let" not being covered by the tick any more. However, we are generally lax with this - constant costs don't matter too much, and given that the "let" was effectively merged we can view it as having lost its identity anyway.Also note that this scoping behaviour allows floating a tick "upwards" in pretty much any situation. For example:case foo of x -> tick ... bar ==> tick ... case foo of x -> barWhile this is always legal, we want to make a best effort to only make us of this where it exposes transformation opportunities.Nghc-lib-parserCost centre scoping: We don't want any costs to move to other cost-centre stacks. This means we not only want no code or cost to get moved out of their cost centres, but we also object to code getting associated with new cost-centre ticks - or changing the order in which they get applied.A rule of thumb is that we don't want any code to gain new annotations. However, there are notable exceptions, for example:let f = y -> foo in tick ... ... (f x) ... ==> tick ... ... foo[x/y] ...In-lining lambdas like this is always legal, because inlining a function does not change the cost-centre stack when the function is called.Nghc-lib-parser;Allows attaching extra information to points in expressionsNghc-lib-parserAn {- SCC -} profiling annotation, either automatically added by the desugarer as a result of -auto-all, or added by the user.Nghc-lib-parserA "tick" used by HPC to track the execution of each subexpression in the original source code.Nghc-lib-parserA breakpoint for the GHCi debugger. This behaves like an HPC tick, but has a list of free variables which will be available for inspection in GHCi when the program stops at the breakpoint.NB. we must take account of these Ids when (a) counting free variables, and (b) substituting (don't substitute for them)Nghc-lib-parserA source note.Source notes are pure annotations: Their presence should neither influence compilation nor execution. The semantics are given by causality: The presence of a source note means that a local change in the referenced source code span will possibly provoke the generated code to change. On the flip-side, the functionality of annotated code *must* be invariant against changes to all source code *except* the spans referenced in the source notes (see "Causality of optimized Haskell" paper for details).Therefore extending the scope of any given source note is always valid. Note that it is still undesirable though, as this reduces their usefulness for debugging and profiling. Therefore we will generally try only to make use of this property where it is necessary to enable optimizations.Nghc-lib-parserthe cost centreNghc-lib-parserbump the entry count?Nghc-lib-parser;scopes over the enclosed expression (i.e. not just a tick)Nghc-lib-parserthe order of this list is important: it matches the order of the lists in the appropriate entry in .9Careful about substitution! See Note [substTickish] in GHC.Core.Subst.Nghc-lib-parserSource coveredNghc-lib-parser4Name for source location (uses same names as CCs)Nghc-lib-parserBinding, used for top level bindings in a module and local bindings in a let.Oghc-lib-parser3A case alternative constructor (i.e. pattern match)Oghc-lib-parser A literal: case e of { 1 -> ... } Invariant: always an *unlifted* literal See Note [Literal alternatives]Oghc-lib-parserTrivial alternative: case e of { _ -> ... }Oghc-lib-parserA case split alternative. Consists of the constructor leading to the alternative, the variables bound from the constructor, and the expression to be executed given that binding. The default alternative is (DEFAULT, [], rhs)Oghc-lib-parserType synonym for expressions that occur in function argument positions. Only O should contain a O at top level, general O should notOghc-lib-parserThis is the data type that represents GHCs core intermediate language. Currently GHC uses System FC  https://www.microsoft.com/en-us/research/publication/system-f-with-type-equality-coercions/ for this purpose, which is closely related to the simpler and better known System F  %http://en.wikipedia.org/wiki/System_F.We get from Haskell source to this Core language in a number of stages: The source code is parsed into an abstract syntax tree, which is represented by the data type z with the names being vThis syntax tree is renamed, which attaches a T to every v (yielding a ) to disambiguate identifiers which are lexically identical. For example, this program: 3 f x = let f x = x + 1 in f (x - 2) Would be renamed by having Unique,s attached so it looked something like this:  f_1 x_2 = let f_3 x_4 = x_4 + 1 in f_3 (x_2 - 2) But see Note [Shadowing] below. The resulting syntax tree undergoes type checking (which also deals with instantiating type class arguments) to yield a z type that has  as it's names.Finally the syntax tree is  desugared from the expressive z type into this O type, which has far fewer constructors and hence is easier to perform optimization, analysis and code generation on.The type parameter b3 is for the type of binders in the expression tree.0The language consists of the following elements:5Variables See Note [Variable occurrences in Core]Primitive literals.Applications: note that the argument may be a O. See Note [Core let/app invariant] See Note [Levity polymorphism invariants]Lambda abstraction See Note [Levity polymorphism invariants]Recursive and non recursive lets. Operationally this corresponds to allocating a thunk for the things bound and then executing the sub-expression.See Note [Core letrec invariant] See Note [Core let/app invariant] See Note [Levity polymorphism invariants] See Note [Core type and coercion invariant]Case expression. Operationally this corresponds to evaluating the scrutinee (expression examined) to weak head normal form and then examining at most one level of resulting constructor (i.e. you cannot do nested pattern matching directly with this).The binder gets bound to the value of the scrutinee, and the O* must be that of all the case alternatives0IMPORTANT: see Note [Case expression invariants]Cast an expression to a particular type. This is used to implement newtypes (a newtype. constructor or destructor just becomes a O in Core) and GADTs.Ticks. These are used to represent all the source annotation we support: profiling SCCs, HPC ticks, and GHCi breakpoints.;A type: this should only show up at the top level of an Arg A coercionOghc-lib-parserA "counting tick" (where tickishCounts is True) is one that counts evaluations in some way. We cannot discard a counting tick, and the compiler should preserve the number of counting ticks as far as possible.However, we still allow the simplifier to increase or decrease sharing, so in practice the actual number of ticks may vary, except that we never change the value from zero to non-zero or vice versa.Oghc-lib-parser/Returns the intended scoping rule for a TickishOghc-lib-parserReturns whether the tick scoping rule is at least as permissive as the given scoping rule.Oghc-lib-parserReturns True for ticks that can be floated upwards easily even where it might change execution counts, such as: Just (tick ... foo) ==> tick ... (Just foo)This is a combination of tickishSoftScope and  tickishCounts. Note that in principle splittable ticks can become floatable using mkNoTick -- even though there's currently no tickish for which that is the case.Oghc-lib-parserReturns True" for a tick that is both counting and> scoping and can be split into its (tick, scope) parts using O and mkNoTick respectively.Oghc-lib-parserReturn True if this source annotation compiles to some backend code. Without this flag, the tickish is seen as a simple annotation that does not have any associated evaluation code.What this means that we are allowed to disregard the tick if doing so means that we can skip generating any code in the first place. A typical example is top-level bindings: foo = tick ...% y -> ... ==> foo = y -> tick ... ...Here there is just no operational difference between the first and the second version. Therefore code generation should simply translate the code as if it found the latter.Oghc-lib-parser)Placement behaviour we want for the ticksOghc-lib-parserReturns whether one tick "contains" the other one, therefore making the second tick redundant.Oghc-lib-parserReturns true if N is orphan.Oghc-lib-parserReturns true if N is not an orphan.Oghc-lib-parserThe number of arguments the N4 must be applied to before the rule can match on itOghc-lib-parserThe  of the ' at the head of the rule left hand sideOghc-lib-parserSet the  of the ' at the head of the rule left hand sideOghc-lib-parserThere is no known NOghc-lib-parser?m9Rghc-lib-parserA R doesn't do a kind-check. Thus, when lookup up (t |> g), you'll find entries inserted under (t), even if (g) is non-reflexive.Rghc-lib-parser TypeMap a is a map from  to a. If you are a client, this is the type you want. The keys in this map may have different kinds.Rghc-lib-parser CoreMap a is a map from N to a3. If you are a client, this is the type you want.Rghc-lib-parser Extend a R$ with a type in the given context. 8extendTypeMapWithScope m (mkDeBruijnContext [a,b,c]) t v is equivalent to #extendTypeMap m (forall a b c. t) v<, but allows reuse of the context over multiple insertions.Rghc-lib-parserConstruct a deBruijn environment with the given variables in scope. e.g. mkDeBruijnEnv [a,b,c] constructs a context  forall a b c.$????????????????RRRRRRRRRRRRRRRRRRRR$RRRRRRRRRRRRRRRR?????????????RRRR???None '(5x( Rghc-lib-parser;Result of testing two type family equations for injectiviy.Rghc-lib-parserEither RHSs are distinct or unification of RHSs leads to unification of LHSsRghc-lib-parserRHSs unify but LHSs don't unify under that substitution. Relevant for closed type families where equation after unification might be overlpapped (in which case it is OK if they don't unify). Constructor stores axioms after unification.Rghc-lib-parserCheck whether two type family axioms don't violate injectivity annotation.Rghc-lib-parserCreate a coercion constructor (axiom) suitable for the given newtype . The % should be that of a new coercion -, the  s the arguments expected by the newtype8 and the type the appropriate right hand side of the newtype/, with the free variables a subset of those s.Rghc-lib-parserCheck whether an open type family equation can be added to already existing instance environment without causing conflicts with supplied injectivity annotations. Returns list of conflicting axioms (type instance declarations).Rghc-lib-parserDo an apartness check, as described in the "Closed Type Families" paper (POPL '14). This should be used when determining if an equation (,) of a closed type family can be used to reduce a certain target type family application.Rghc-lib-parserGet rid of *outermost* (or toplevel) * type function redex * data family redex * newtypes returning an appropriate Representational coercion. Specifically, if topNormaliseType_maybe env ty = Just (co, ty') then (a) co :: ty ~R ty' (b) ty' is not a newtype, and is not a type-family or data-family redexHowever, ty' can be something like (Maybe (F ty)), where (F ty) is a redex.Always operates homogeneously: the returned type has the same kind as the original type, and the returned coercion is always homogeneous.Rghc-lib-parserTry to simplify a type-family application, by *one* step If topReduceTyFamApp_maybe env r F tys = Just (co, rhs, res_co) then co :: F tys ~R# rhs res_co :: typeKind(F tys) ~ typeKind(rhs) Type families and data families; always Representational roleRghc-lib-parser flattened target arguments. Make sure they're flattened! See Note [Flattening]. (NB: This "flat" is a different "flat" than is used in GHC.Tc.Solver.Flatten.)ghc-lib-parserthe candidate equation we wish to use Precondition: this matches the targetghc-lib-parserTrue  = equation can fire:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR:RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRnNone  #ghc-lib-parserMake a *promoted* list.#ghc-lib-parserSpecialization of ˏ for tuples#ghc-lib-parserBuild the type of a small tuple that holds the specified type of thing Flattens 1-tuples. See Note [One-tuples].Sghc-lib-parserMake a fake, recovery  from an existing one. Used when recovering from errors in type declarationsSghc-lib-parserBuilt-in syntax isn't "in scope" so these OccNames map to wired-in Names with BuiltInSyntax. However, this should only be necessary while resolving names produced by Template Haskell splices since we take care to encode built-in syntax names specially in interface files. See Note [Symbol table representation of names].Moreover, there is no need to include names of things that the user can't write (e.g. type representation bindings like $tc(,,,)).Sghc-lib-parserIf the given name is that of a constraint tuple, return its arity. Note that this is inefficient.Sghc-lib-parser'Type constructor for n-ary unboxed sum.Sghc-lib-parser=Data constructor for i-th alternative of a n-ary unboxed sum.Sghc-lib-parserSpecialization of ˏ for sumsSghc-lib-parser,Make a tuple type. The list of types should not include any RuntimeRep specifications. Boxed 1-tuples are flattened. See Note [One-tuples]Sghc-lib-parser,Make a tuple type. The list of types should not include any RuntimeRep specifications. Boxed 1-tuples are *not* flattened. See Note [One-tuples] and Note [Don't flatten tuples from HsSyn] in  GHC.Core.Make#ghc-lib-parserof the elements of the listghc-lib-parserelements##############################################################247RRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRSSSSRSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSRSSSSSSSSS#SR2SR4SSRSSS#SRSRSSRSSS#SSS#SSSSS#SSSS#SSSSSSSSS#SSSSS#S#7#S##SSS#RSSSRSSR#RSS####SS###S###############################SSS##SS######S#SSSSSSSS#SSSSSSNoneSghc-lib-parserThe NameCache makes sure that there is just one Unique assigned for each original name; i.e. (module-name, occ-name) pair and provides something of a lookup mechanism for those names.Sghc-lib-parserSupply of uniquesTghc-lib-parser.Ensures that one original name gets one uniqueTghc-lib-parserPer-module cache of original s given sTghc-lib-parser6Return a function to atomically update the name cache. SSSTTTTTT TTTTSSSTTNone Tghc-lib-parser Header information only, not rhsTghc-lib-parser,Show only some sub-components. Specifically, []Print all sub-components.(n:ns)Print sub-component n with  ShowSub = ns!; elide other sub-components to ...6 May 14: the list is max 1 element long at the momentTghc-lib-parserEverything including GHC-internal information (used in --show-iface)Tghc-lib-parserIface type for LambdaFormInfo. Fields not relevant for imported Ids are omitted in this type.Tghc-lib-parserThis corresponds to HsSrcBangTghc-lib-parserThis corresponds to an HsImplBang; that is, the final implementation decision about the data constructor argUghc-lib-parserName of associated axiom and branches for pretty printing purposes, or H for an empty closed family without an axiom See Note [Pretty printing via Iface syntax] in GHC.Core.Ppr.TyThingUghc-lib-parserA binding top-level , in an interface file (e.g. the name of an U).Ughc-lib-parserPretty Print an IfaceExprThe first argument should be a function that adds parens in context that need an atomic value (e.g. function args)88888888888888888888888888888888888888######888888888888888888888888888888888888888888999999999999999999999999999999999999999999999JJJJJJJJTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUTTTTTTTJJJJJJJJUUUUUUUUUUUUTTTTTTTTUUUUUUUUUUUTTTTTTTTTTUȔ3None&-23>?Vghc-lib-parserAmbiguous Field OccurrenceRepresents an *occurrence* of a field that is potentially ambiguous after the renamer, with the ambiguity resolved by the typechecker. We always store the ' that the user originally wrote, and store the selector function after the renamer (for unambiguous occurrences) or the typechecker (for ambiguous occurrences).+See Note [HsRecField and HsRecUpdField] in  GHC.Hs.Pat- and Note [Disambiguating record fields] in GHC.Tc.Gen.Expr". See Note [Located RdrNames] in  GHC.Hs.ExprVghc-lib-parserField OccurrenceRepresents an *occurrence* of an unambiguous field. We store both the ' the user originally wrote, and after the renamer, the selector function.Vghc-lib-parserSee Note [Located RdrNames] in  GHC.Hs.ExprVghc-lib-parserLocated Field OccurrenceVghc-lib-parserHaskell Constructor DetailsVghc-lib-parserConstructor Declaration FieldVghc-lib-parser' : (Vghc-lib-parserSee Note [ConDeclField passs]Vghc-lib-parser%Located Constructor Declaration FieldVghc-lib-parserHaskell Tuple SortVghc-lib-parserThis is used in the syntax. In constructor declaration. It must keep the arrow representation.Vghc-lib-parser2Denotes the type of arrows in the surface languageVghc-lib-parsera -> b or a C bVghc-lib-parsera %1 -> b or a %1 C b, or a E bVghc-lib-parsera %m -> b or a %m C b (very much including `a %Many -> b`! This is how the programmer wrote it). It is stored as an V9 so as to preserve the syntax as written in the program.Vghc-lib-parserHaskell Type LiteralVghc-lib-parser Haskell TypeVghc-lib-parser' : ( , (,(5 For details on above see note [Api annotations] in GHC.Parser.AnnotationVghc-lib-parser' : NoneVghc-lib-parser' : NoneVghc-lib-parser' : (,Vghc-lib-parser' : ( '[' , ( ']'Vghc-lib-parser' : (  '(' or '(#' , (  ')' or '#)'Vghc-lib-parser' : ( '(#' , ( '#)'@Vghc-lib-parser' : NoneVghc-lib-parser' : ( '(' , ( ')'Vghc-lib-parser  (?x :: ty)' : (Vghc-lib-parser' : NoneVghc-lib-parser  (ty :: kind)' : ( '(' , (,( ')'Vghc-lib-parser' : ( '$(' , ( ')'Vghc-lib-parser' : NoneVghc-lib-parser' : ( '{-# UNPACK' or '{-# NOUNPACK' , ( '#-}' ( '!'Vghc-lib-parser' : ( '{' , ( '}'Vghc-lib-parser' : ( "'[" , ( ']'Vghc-lib-parser' : ( "'(" , ( ')'Vghc-lib-parser' : NoneVghc-lib-parser' : NoneVghc-lib-parserHaskell Type Variable Binder The flag annotates the binder. It is # in places where explicit specificity is allowed (e.g. x :: forall {a} b. ...) or () in other places.Vghc-lib-parser' : ( , (, (Vghc-lib-parserThese names are used early on to store the names of implicit parameters. They completely disappear after type-checking.Vghc-lib-parser'Located Haskell Signature Wildcard TypeVghc-lib-parserLocated Haskell Wildcard TypeVghc-lib-parserLocated Haskell Signature TypeVghc-lib-parserThe extension field for V2, which is only used in the renamer onwards. See ,Note [Pattern signature binders and scoping].Vghc-lib-parserWildcard namesVghc-lib-parserImplicitly bound variable namesVghc-lib-parserTypes that can appear in pattern signatures, as well as the signatures for term-level binders in RULES. See ,Note [Pattern signature binders and scoping].This is very similar to  HsSigWcType., but with slightly different semantics: see Note [HsType binders] . See also #Note [The wildcard story for types].Vghc-lib-parserAfter renamer: VVghc-lib-parserMain payload (the type itself)Vghc-lib-parserHaskell Wildcard BindersVghc-lib-parserHaskell Implicit BindersVghc-lib-parser)Located Haskell Quantified Type VariablesWghc-lib-parser$Located Haskell Type Variable BinderWghc-lib-parser The type variable binders in an V . See also 1Note [Variable Specificity and Forall Visibility] in GHC.Tc.Gen.HsType.Wghc-lib-parser A visible forall (e.g., forall a -> {...}). These do not have any notion of specificity, so we use () as a placeholder value.Wghc-lib-parser An invisible forall (e.g., forall a {b} c -> {...}), where each binder has a #.Wghc-lib-parserLocated Haskell KindWghc-lib-parser Haskell KindWghc-lib-parserLocated Haskell TypeWghc-lib-parserHaskell ContextWghc-lib-parserLocated Haskell ContextWghc-lib-parser Bang TypeIn the parser, strictness and packedness annotations bind more tightly than docstrings. This means that when consuming a W (and looking for V8) we must be ready to peer behind a potential layer of V . See #15206 for motivation and W for an example.Wghc-lib-parserLocated Bang TypeWghc-lib-parserReturn the attached flagWghc-lib-parserSet the attached flagWghc-lib-parser Does this V' come with an explicit kind annotation?Wghc-lib-parserDo all type variables in this V come with kind annotations?Wghc-lib-parserConvert an arrow into its corresponding multiplicity. In essence this erases the information of whether the programmer wrote an explicit multiplicity or a shorthand.Wghc-lib-parserWhen creating syntax we use the shorthands. It's better for printing, also, the shorthands work trivially at each pass.Wghc-lib-parserWhen creating syntax we use the shorthands. It's better for printing, also, the shorthands work trivially at each pass.Wghc-lib-parser7Get the kind signature of a type, ignoring parentheses:hsTyKindSig `Maybe ` = Nothing hsTyKindSig `Maybe :: Type -> Type ` = Just `Type -> Type` hsTyKindSig `Maybe :: ((Type -> Type))` = Just `Type -> Type`This is used to extract the result kind of type synonyms with a CUSK:2type S = (F :: res_kind) ^^^^^^^^Wghc-lib-parserRetrieve the name of the "head" of a nested type application. This is somewhat like GHC.Tc.Gen.HsType.splitHsAppTys, but a little more thorough. The purpose of this function is to examine instance heads, so it doesn't handle *all* cases (like lists, tuples, (~), etc.).Wghc-lib-parser Compute the  associated with an V.Wghc-lib-parserDecompose a pattern synonym type signature into its constituent parts.Note that this function looks through parentheses, so it will work on types such as  (forall a.  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them.Wghc-lib-parser$Decompose a sigma type (of the form forall  tvs. context => body) into its constituent parts. Only splits type variable binders that were quantified invisibly (e.g.,  forall a., with a dot).This function is used to split apart certain types, such as instance declaration types, which disallow visible forall)s. For instance, if GHC split apart the forall in "instance forall a -> Show (Blah a)6, then that declaration would mistakenly be accepted!Note that this function looks through parentheses, so it will work on types such as  (forall a.  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them.Wghc-lib-parser;Decompose a GADT type into its constituent parts. Returns (mb_tvbs, mb_ctxt, body), where:mb_tvbs are Just the leading forall0s, if they are provided. Otherwise, they are Nothing.mb_ctxt is Just5 the context, if it is provided. Otherwise, it is Nothing.body, is the body of the type after the optional foralls and context.?This function is careful not to look through parentheses. See Note [GADT abstract syntax] (Wrinkle: No nested foralls or contexts)  GHC.Hs.Decls for why this is important.Wghc-lib-parserDecompose a type of the form forall  tvs. body into its constituent parts. Only splits type variable binders that were quantified invisibly (e.g.,  forall a., with a dot).This function is used to split apart certain types, such as instance declaration types, which disallow visible forall)s. For instance, if GHC split apart the forall in "instance forall a -> Show (Blah a)6, then that declaration would mistakenly be accepted!Note that this function looks through parentheses, so it will work on types such as  (forall a.  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them. Unlike W, this function does not look through parentheses, hence the suffix _KP (short for "Keep Parentheses").Wghc-lib-parserDecompose a type of the form forall  tvs. body into its constituent parts. Only splits type variable binders that were quantified invisibly (e.g.,  forall a., with a dot).This function is used to split apart certain types, such as instance declaration types, which disallow visible forall)s. For instance, if GHC split apart the forall in "instance forall a -> Show (Blah a)6, then that declaration would mistakenly be accepted!Unlike W, this function does not look through parentheses, hence the suffix _KP (short for "Keep Parentheses").Wghc-lib-parserDecompose a type of the form context => body into its constituent parts.Note that this function looks through parentheses, so it will work on types such as  (context =>  ...). The downside to this is that it is not generally possible to take the returned types and reconstruct the original type (parentheses and all) from them.Wghc-lib-parser3Decompose a type class instance type (of the form forall  tvs. context => instance_head-) into its constituent parts. Note that the [Name] s returned correspond to either:The implicitly bound type variables (if the type lacks an outermost forall), orThe explicitly bound type variables (if the type has an outermost forall).?This function is careful not to look through parentheses. See 6Note [No nested foralls or contexts in instance types] for why this is important.Wghc-lib-parser3Decompose a type class instance type (of the form forall  tvs. context => instance_head ) into the  instance_head.Wghc-lib-parser3Decompose a type class instance type (of the form forall  tvs. context => instance_head ) into the  instance_head and retrieve the underlying class type constructor (if it exists).Wghc-lib-parser3Prints a forall; When passed an empty list, prints forall ./ forall -> only when  -dppr-debug is enabled.Wghc-lib-parser Version of W or pprHsForAllExtra that will always print forall. when passed Just []. Prints nothing if passed HWghc-lib-parserW p t returns J if the type t% needs parentheses under precedence p.Wghc-lib-parserW p ty checks if W p ty is true, and if so, surrounds ty with an V . Otherwise, it simply returns ty.Wghc-lib-parserW p ctxt checks if ctxt is a single constraint c such that W p c is true, and if so, surrounds c with an V to form a parenthesized ctxt . Otherwise, it simply returns ctxt unchanged.Wghc-lib-parser' : NoneVghc-lib-parser May have ' : ( when in a listWghc-lib-parser' : (Wghc-lib-parser May have ' : ( when in a listWghc-lib-parser' : ( For details on above see note [Api annotations] in GHC.Parser.AnnotationJJJJJJJJJJKKKKVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVWWVVVVWWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWVVVVWVWWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWVVVVVWVVVVWVWVWWKKJJKKJJJJJJJJWWVVVVVVVVWVVVVVVVVVVWVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNone0Wghc-lib-parserEvery node in an expression annotated with its (non-global) free variables, both Ids and TyVars, and type.Wghc-lib-parserEvery node in an expression annotated with its (non-global) free variables, both Ids and TyVars, and type. NB: see Note [The FVAnn invariant]Xghc-lib-parserEvery node in a binding group annotated with its (non-global) free variables, both Ids and TyVars, and type.Xghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a non-deterministic set.Xghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a deterministic set.Xghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a deterministically ordered list.Xghc-lib-parser2Find all locally-defined free Ids in an expressionXghc-lib-parserFind all locally-defined free Ids in an expression returning a deterministic set.Xghc-lib-parserFind all locally-defined free Ids in an expression returning a deterministically ordered list.Xghc-lib-parserFind all locally-defined free Ids in several expressions returning a deterministic set.Xghc-lib-parserFind all locally-defined free Ids in several expressions returning a deterministically ordered list.Xghc-lib-parserFind all locally-defined free Ids or type variables in several expressions returning a non-deterministic set.Xghc-lib-parserFind all locally-defined free Ids or type variables in several expressions returning a deterministically ordered list.Xghc-lib-parser4Find all locally defined free Ids in a binding groupXghc-lib-parser=Finds free variables in an expression selected by a predicateXghc-lib-parserFinds free variables in an expression selected by a predicate returning a deterministically ordered list.Xghc-lib-parserFinds free variables in several expressions selected by a predicateXghc-lib-parserFinds free variables in several expressions selected by a predicate returning a deterministically ordered list.Xghc-lib-parserFinds the free external# names of several expressions: see ͏ for detailsXghc-lib-parserorphNamesOfAxiom collects the names of the concrete types and type constructors that make up the LHS of a type family instance, including the family name itself.For instance, given `type family Foo a b`: `type instance Foo (F (G (H a))) b = ...` would yield [Foo,F,G,H].Used in the implementation of ":info" in GHCi.Xghc-lib-parserThose variables free in the right hand side of a rule returned as a non-deterministic setXghc-lib-parserThose variables free in the both the left right hand sides of a rule returned as a non-deterministic setXghc-lib-parserThose variables free in the both the left right hand sides of rules returned as a deterministic setXghc-lib-parserMake a P containing a number of N!s, suitable for putting into an Xghc-lib-parserSynAny `SynFun` (SynList `SynFun` SynType Int) `SynFun` SynAny/you'll get three types back: one for the first X, the element) type of the list, and one for the last X". You don't get anything for the X, because you've said positively that it should be an Int, and so it shall be.You'll also get three multiplicities back: one for each function arrow. See also Note [Linear types] in Multiplicity.-This is defined here to avoid defining it in GHC.Tc.Gen.Expr boot file.Xghc-lib-parserAny typeXghc-lib-parser5A rho type, skolemised or instantiated as appropriateXghc-lib-parser6A list type. You get back the element type of the listXghc-lib-parser A function.Xghc-lib-parser A known type.Xghc-lib-parserAn expected type to check against during type-checking. See Note [ExpType] in GHC.Tc.Utils.TcMType&, where you'll also find manipulators.Xghc-lib-parserMake an X suitable for checking.Xghc-lib-parserLike X but accepts a regular TcTypeXghc-lib-parserLike mkFunTys but for XXghc-lib-parser8Change the TcLevel in a skolem, extending a substitutionXghc-lib-parserFinds outermost type-family applications occurring in a type, after expanding synonyms. In the list (F, tys) that is returned we guarantee that tys matches F's arity. For example, given type family F a :: * -> * (arity 1) calling tcTyFamInsts on (Maybe (F Int Bool) will return (F, [Int]), not (F, [Int,Bool])This is important for its use in deciding termination of type instances (see #11581). E.g. type instance G [Int] = ...(F Int )... we don't need to take into account when asking if the calls on the RHS are smaller than the LHSXghc-lib-parserLike X, except that the output records whether the type family and its arguments occur as an  invisible argument in some type application. This information is useful because it helps GHC know when to turn on -fprint-explicit-kinds during error reporting so that users can actually see the type family being mentioned.As an example, consider: class C a data T (a :: k) type family F a :: k instance C (T @(F Int) (F Bool)) -There are two occurrences of the type family F in that C instance, so X (C (T @(F Int) (F Bool))) will return: [ (J, F, [Int]) , (G, F, [Bool]) ] F Int is paired with J since it appears as an  invisible argument to C , whereas F Bool is paired with G since it appears an a visible argument to C. See also 'Note [Kind arguments in error messages] in  GHC.Tc.Errors.Xghc-lib-parserIn an application of a  to some arguments, find the outermost occurrences of type family applications within the arguments. This function will not consider the 4 itself when checking for type family applications.See X for more details on how this works (as this function is called inside of X).Xghc-lib-parserCheck that a type does not contain any type family applications.Xghc-lib-parser;True of both given and wanted flatten-skolems (fmv and fsk)Yghc-lib-parser-Make a sigma ty where all type variables are #>. That is, they cannot be used with visible type application.Yghc-lib-parserMake a sigma ty where all type variables are "specified". That is, they can be used with visible type applicationYghc-lib-parser$Splits a forall type into a list of :s and the inner type. Always succeeds, even if it returns an empty list.Yghc-lib-parserSplits a type into a TyBinder and a body, if possible. Panics otherwiseYghc-lib-parserLike Y, but splits off only named binders, returning just the tycovars.Yghc-lib-parserLike Y, but only splits :s with #= type variable binders. All split tyvars are annotated with ().Yghc-lib-parserLike Y, but only splits :s with # type variable binders. All split tyvars are annotated with their #.Yghc-lib-parserLike Y$, but splits off only named binders.Yghc-lib-parser'Is this a ForAllTy with a named binder?Yghc-lib-parser"Split a sigma type into its parts.Yghc-lib-parser (a -> f b) -> s -> f t if you called tcSplitSigmaTy on this type: 2forall s t a b. Each s t a b => Traversal s t a b then it would return .([s,t,a,b], [Each s t a b], Traversal s t a b). But if you instead called tcSplitNestedSigmaTys on the type, it would return ([s,t,a,b,f], [Each s t a b, Applicative f], (a -> f b) -> s -> f t).Yghc-lib-parserLike tcRepSplitTyConApp_maybe, but only returns the .Yghc-lib-parserSplit off exactly the specified number argument types Returns (Left m) if there are m missing arrows in the type (Right (tys,res)) if the type looks like t1 -> ... -> tn -> resYghc-lib-parser?Strips off n *visible* arguments and returns the resulting typeYghc-lib-parserReturns the number of arguments in the given type, without looking through synonyms. This is used only for error reporting. We don't look through synonyms because of #11313.Yghc-lib-parserIf the type is a tyvar, possibly under a cast, returns it, along with the coercion. Thus, the co is :: kind tv ~N kind typeYghc-lib-parser Just like Y, but will return True for types of different kinds as long as their non-coercion structure is identical.Yghc-lib-parserLike Y, but returns True if the visible part of the types are equal, even if they are really unequal (in the invisible bits)Yghc-lib-parserLike pickyEqTypeVis$, but returns a Bool for convenienceYghc-lib-parserWhen inferring types, should we quantify over a given predicate? Generally true of classes; generally false of equality constraints. Equality constraints that mention quantified type variables and implicit variables complicate the story. See Notes [Inheriting implicit parameters] and [Quantifying over equality constraints]Yghc-lib-parserIs the equality a ~r ...a.... definitely insoluble or not? a ~r Maybe a -- Definitely insoluble a ~N ...(F a)... -- Not definitely insoluble -- Perhaps (F a) reduces to Int a ~R ...(N a)... -- Not definitely insoluble -- Perhaps newtype N a = MkN Int See Note [Occurs check error] in GHC.Tc.Solver.Canonical& for the motivation for this function.Yghc-lib-parserLike Y, but also says J for X typesYghc-lib-parser.Does a type represent a floating-point number?Yghc-lib-parser Is a type ?Yghc-lib-parser Is a type a  CallStack?Yghc-lib-parserIs a  a  CallStack implicit parameter?(If so, return the name of the parameter.Yghc-lib-parserDoes the given tyvar appear at the head of a chain of applications (a t1 ... tn)Yghc-lib-parserIs this type *almost function-free*? See Note [Almost function-free] in  GHC.Tc.TypesYghc-lib-parserFor every arg a tycon can take, the returned list says True if the argument is taken visibly, and False otherwise. Ends with an infinite tail of Trues to allow for oversaturation.Yghc-lib-parserIf the tycon is applied to the types, is the next argument visible?Yghc-lib-parser2Should this type be applied to a visible argument?######XXXXXXXX###7::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;============>>>>>>>>>>>>@@@@@@@@@@ABBBBBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYXXXXXX#XXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXY=XYXXXXXYYYYYYYYYXXYYYYYYYYY=YYYYYYYYYYYYYYYY=YYYYYY=YYYYYY>>>>>YYYYYYYYYYYYYYYYYYYYYY>7YYYYYYYYYYXXXXYYYYYYYYYXXXXXXXYYYYYYYYYYY>##=>########::=====::::::::=:::::BBBBBAYYY=>::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;>>>:::::::::::@@@@::@@@@@@XYY:YYYX0None3\ Yghc-lib-parserSet of visible orphan modules, according to what modules have been directly imported. This is based off of the dep_orphs field, which records transitively reachable orphan modules (modules that define orphan instances).Yghc-lib-parserY represents the combination of the global type class instance environment, the local type class instance environment, and the set of transitively reachable orphan modules (according to what modules have been directly imported) used to test orphan instance visibility.Zghc-lib-parserA type-class instance. Note that there is some tricky laziness at work here. See Note [ClsInst laziness and the rough-match fields] for more details.Zghc-lib-parser Class nameZghc-lib-parserTop of type argsZghc-lib-parseris_dfun_name = idName . is_dfun.We use Z for the visibility check, Z, which needs to know the   which the dictionary is defined in. However, we cannot use the   attached to Z since doing so would mean we would potentially pull in an entire interface file unnecessarily. This was the cause of #12367.Zghc-lib-parserA fuzzy comparison function for class instances, intended for sorting instances before displaying them to the user.Zghc-lib-parserCollects the names of concrete types and type constructors that make up the head of a class instance. For instance, given `class Foo a b`:`instance Foo (Either (Maybe Int) a) Bool` would yield [Either, Maybe, Int, Bool].Used in the implementation of ":info" in GHCi.The Y is because of instance Foo a => Baz T where ... The decl is an orphan if Baz and T are both not locally defined, even if Foo *is* locally definedZghc-lib-parserTest if an instance is visible, by checking that its origin module is in Y2. See Note [Instance lookup and orphan instances]Zghc-lib-parserChecks for an exact match of ClsInst in the instance environment. We use this when we do signature checking in  GHC.Tc.ModuleZghc-lib-parserTrue when when the instance heads are the same e.g. both are Eq [(a,b)] Used for overriding in GHCi Obviously should be insensitive to alpha-renamingZghc-lib-parserLook up an instance in the given instance environment. The given class application must match exactly one instance and the match may not contain any flexi type variables. If the lookup is unsuccessful, yield 'Left errorMessage'.Zghc-lib-parserSee Note [Rules for instance lookup] ^ See Note [Safe Haskell Overlapping Instances] in  GHC.Tc.Solver ^ See Note [Safe Haskell Overlapping Instances Implementation] in  GHC.Tc.SolverZghc-lib-parserthe name of the classghc-lib-parser(the types which the class was applied toghc-lib-parserthe  of the dictionary bindingghc-lib-parserthe # of the dictionary.ghc-lib-parsermay this instance overlap?ghc-lib-parseris this instance an orphan?#AAYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ#YYZZZZZZZZZZZYZZZZZZZZZZZZYYYZZYZZZZZZZZZZZZZZZAAZZZNone3Zghc-lib-parser Evidence for  CallStack implicit parameters.Zghc-lib-parserEvCsPushCall name loc stk represents a call to name, occurring at loc, in a calling context stk.Zghc-lib-parserInstructions on how to make a Typeable0 dictionary. See Note [Typeable evidence terms]Zghc-lib-parserDictionary for  Typeable T where T is a type constructor with all of its kind variables saturated. The [EvTerm] is Typeable" evidence for the applied kinds..Zghc-lib-parserDictionary for Typeable (s t), given a dictionaries for s and t.Zghc-lib-parserDictionary for Typeable (s # w -> t), given a dictionaries for w, s, and t.Zghc-lib-parser%Dictionary for a type literal, e.g. Typeable "foo" or  Typeable 3 The Z is evidence of, e.g.,  KnownNat 3 (see #10348)Zghc-lib-parserThis version does a slow check, calculating the related types and seeing if they are equal.[ghc-lib-parserIf the EqRel is ReprEq, makes a SubCo; otherwise, does nothing. Note that the input coercion should always be nominal.[ghc-lib-parserIdentifies the  lambda-bound dictionaries of an Z. This is used (only) to allow the pattern-match overlap checker to know what Given dictionaries are in scope.7We specifically do not collect dictionaries bound in a Z. These are either superclasses of lambda-bound ones, or (extremely numerous) results of binding Wanted dictionaries. We definitely don't want all those cluttering up the Given dictionaries for pattern-match overlap checking![ghc-lib-parser,Any sort of evidence Id, including coercions[ghc-lib-parserd |> co[ghc-lib-parser Create a  that unwraps an implicit-parameter or overloaded-label dictionary to expose the underlying value. We expect the  to have the form `IP sym ty` or `IsLabel sym ty`, and return a  `co :: IP sym ty ~ ty` or `co :: IsLabel sym ty ~ Proxy# sym -> ty`. See also Note [Type-checking overloaded labels] in GHC.Tc.Gen.Expr.[ghc-lib-parser Create a > that wraps a value in an implicit-parameter dictionary. See [.[ghc-lib-parserConvert the QuoteWrapper into a normal HsWrapper which can be used to apply its contents.,,,,9ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZZZ[[[[[[[[[[[[[[[ZZZZZZZZZZZZ[[[[[[[[[[ZZZZZ[[[[[[ZZZZZZZZZ[[[[[[[[[[[[[ZZZZZZZZZZZZ9Z,,,,ZZZZZZZZZZZZZZZ[ZZZZZZZZZZZZZZ[[ZZ[[None-235>?5[ghc-lib-parser!Haskell Pattern Synonym Direction[ghc-lib-parserRecord Pattern Synonym Field[ghc-lib-parserHaskell Pattern Synonym Details[ghc-lib-parser!Type checker Specification Pragma[ghc-lib-parserThe Id to be specialised, a wrapper that specialises the polymorphic function, and inlining spec for the specialised function[ghc-lib-parser*Located Type checker Specification Pragmas[ghc-lib-parser#Type checker Specialisation Pragmas[ conveys  SPECIALISE/ pragmas from the type checker to the desugarer[ghc-lib-parserSuper-specialised: a default method should be macro-expanded at every call site[ghc-lib-parserFixity Signature[ghc-lib-parserLocated Fixity Signature[ghc-lib-parserSignatures and pragmas[ghc-lib-parserAn ordinary type signature f :: Num a => a -> aAfter renaming, this list of Names contains the named wildcards brought into scope by this signature. For a signature _ -> _a -> Bool., the renamer will leave the unnamed wildcard _$ untouched, and the named wildcard _a is then replaced with fresh meta vars in the type. Their names are stored in the type signature that brought them into scope, in this third field to be more specific.w : w , w[ghc-lib-parser A pattern synonym type signature ,pattern Single :: () => (Show a) => a -> [a]w : w , w,w w,w[ghc-lib-parserA signature for a class method False: ordinary class-method signature True: generic-default class method signature e.g. class C a where op :: a -> a -- Ordinary default op :: Eq a => a -> a -- Generic default No wildcards allowed herew : w , w[ghc-lib-parserA type signature in generated code, notably the code generated for record selectors. We simply record the desired Id itself, replete with its name, type and IdDetails. Otherwise it's just like a type signature: there should be an accompanying binding[ghc-lib-parserAn ordinary fixity declaration  infixl 8 ***w : w , w[ghc-lib-parserAn inline pragma {#- INLINE f #-}w : w  '{-# INLINE' and '[' , w,w , w,w , w[ghc-lib-parserA specialisation pragma "{-# SPECIALISE f :: Int -> Int #-}w : w, w '{-# SPECIALISE' and '[', w, w, w ']' and '#-}', w[ghc-lib-parser6A specialisation pragma for instance declarations only ${-# SPECIALISE instance Eq [Int] #-}(Class tys); should be a specialisation of the current instance declarationw : w, w,w[ghc-lib-parser$A minimal complete definition pragma ${-# MINIMAL a | (b, c | (d | e)) #-}w : w, w,w, w[ghc-lib-parser+A "set cost centre" pragma for declarations {-# SCC funName #-}or &{-# SCC funName "cost_centre_name" #-}[ghc-lib-parserA complete match pragma {-# COMPLETE C, D [:: T] #-}Used to inform the pattern match checker about additional complete matchings which, for example, arise from pattern synonym definitions.[ghc-lib-parserLocated Signature[ghc-lib-parserImplicit parameter bindings.These bindings start off as (Left "x") in the parser and stay that way until after type-checking when they are replaced with (Right d), where "d" is the name of the dictionary holding the evidence for the implicit parameter.w : w[ghc-lib-parser"Located Implicit Parameter Binding May have w : w when in a list[ghc-lib-parser#Haskell Implicit Parameter Bindings[ghc-lib-parserw : w, w,w, w,w '{', w '}',Pattern Synonym binding[ghc-lib-parser.Post renaming, FVs. See Note [Bind free vars][ghc-lib-parserName of the pattern synonym[ghc-lib-parserFormal parameter names[ghc-lib-parserRight-hand side[ghc-lib-parserDirectionality[ghc-lib-parserAbstraction Bindings Export[ghc-lib-parser(Any INLINE pragma is attached to this Id[ghc-lib-parserSee Note [ABExport wrapper] Shape: (forall abs_tvs. abs_ev_vars => abe_mono) ~ abe_poly[ghc-lib-parserSPECIALISE pragmas[ghc-lib-parserFree variables[ghc-lib-parserType of the GRHSs[ghc-lib-parser1Haskell Binding with separate Left and Right id's[ghc-lib-parserFunction-like Binding'FunBind is used for both functions f x = e) and variables  f = x -> e) and strict variables  !x = x + 1/Reason 1: Special case for type inference: see .Reason 2: Instance decls can only have FunBinds, which is convenient. If you change this, you'll need to change e.g. rnMethodBinds'But note that the form f :: a->a = ... parses as a pattern binding, just like (f :: a -> a) = ... 6Strict bindings have their strictness recorded in the J of their  MatchContext. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.wsw), attached to each element of fun_matchesw,w, w,w,[ghc-lib-parserPattern BindingThe pattern is never a simple variable; That case is done by FunBind. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.[ghc-lib-parserVariable BindingDictionary binding and suchlike. All VarBinds are introduced by the type checker\ghc-lib-parserAbstraction Bindings\ghc-lib-parserw : w , w,w , w w '{',w '}'\ghc-lib-parserAfter the renamer (but before the type-checker), this contains the locally-bound free variables of this defn. See Note [Bind free vars]After the type-checker, this contains a coercion from the type of the MatchGroup to the type of the Id. Example: 1 f :: Int -> forall a. a -> a f x y = y Then the MatchGroup will have type (Int -> a' -> a') (with a free type variable a'). The coercion will take a CoreExpr of this type and convert it to a CoreExpr of type Int -> forall a'. a' -> a' Notice that the coercion captures the free a'.\ghc-lib-parser The payload\ghc-lib-parserTicks to put on the rhs, if any\ghc-lib-parserSee Note [Bind free vars]\ghc-lib-parserTicks to put on the rhs, if any, and ticks to put on the bound variables.\ghc-lib-parserLocated only for consistency\ghc-lib-parserIncludes equality constraints\ghc-lib-parserAbsBinds only gets used when idL = idR after renaming, but these need to be idL's for the collect... code in HsUtil to have the right type\ghc-lib-parser#Evidence bindings Why a list? See GHC.Tc.TyCl.Instance4 Note [Typechecking plan for instance declarations]\ghc-lib-parserTypechecked user bindings\ghc-lib-parserLocated Haskell Binding with separate Left and Right identifier types\ghc-lib-parserLocated Haskell Bindings with separate Left and Right identifier types\ghc-lib-parserHaskell Binding\ghc-lib-parserLocated Haskell Bindings\ghc-lib-parserLocated Haskell Binding\ghc-lib-parserHaskell Value bindings with separate Left and Right identifier types (not implicit parameters) Used for both top level and nested bindings May contain pattern synonym bindings\ghc-lib-parserValue Bindings InBefore renaming RHS; idR is always RdrName Not dependency analysed Recursive by default\ghc-lib-parserValue Bindings OutAfter renaming RHS; idR can be Name or Id Dependency analysed, later bindings in the list may depend on earlier ones.\ghc-lib-parserHaskell Value Bindings\ghc-lib-parserHaskell Local Bindings with separate Left and Right identifier typesBindings in a 'let' expression or a 'where' clause\ghc-lib-parserHaskell Value Bindings\ghc-lib-parser#Haskell Implicit Parameter Bindings\ghc-lib-parserEmpty Local Bindings\ghc-lib-parserLocated Haskell local bindings\ghc-lib-parserHaskell Local Bindings\ghc-lib-parserUsing SourceText in case the pragma was spelled differently or used mixed case[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\[[\[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[\\[[\[\\\\\\\\\\\\\\\\\\[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\[[[\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\[[[[[[[[[yNone&-23567>?E(+ghc-lib-parserPatternw : w\ghc-lib-parserHaskell Record Fieldw : w,For details on above see note [Api annotations] in GHC.Parser.Annotation\ghc-lib-parser!Filled in by renamer when punning\ghc-lib-parserNote [Punning]\ghc-lib-parserHaskell Record Update Field\ghc-lib-parserHaskell Record Field\ghc-lib-parser#Located Haskell Record Update Field\ghc-lib-parserLocated Haskell Record Field\ghc-lib-parserLocated Haskell Record Field\ghc-lib-parserHaskell Record FieldsHsRecFields is used only for patterns and expressions (not data type declarations)\ghc-lib-parser#Coercion Pattern (translation only):During desugaring a (CoPat co pat) turns into a cast with co+ on the scrutinee, followed by a match on pat.\ghc-lib-parserCoercion Pattern If co :: t1 ~ t2, p :: t2, then (CoPat co p) :: t1\ghc-lib-parser)Why not LPat? Ans: existing locn will do\ghc-lib-parserType of whole pattern, t1\ghc-lib-parserThis is the extension field for ConPat, added after typechecking It adds quite a few extra fields, to support elaboration of pattern matching.\ghc-lib-parserThe universal arg types 1-1 with the universal tyvars of the constructor/pattern synonym Use (conLikeResTy pat_con cpt_arg_tys) to get the type of the pattern\ghc-lib-parserExistentially bound type variables in correctly-scoped order e.g. [k:* x:k]\ghc-lib-parserDitto *coercion variables* and *dictionaries* One reason for putting coercion variable here I think is to ensure their kinds are zonked\ghc-lib-parser%Bindings involving those dictionaries\ghc-lib-parser#Haskell Constructor Pattern Details\ghc-lib-parserWildcard Pattern The sole reason for a type on a WildPat is to support hsPatType :: Pat Id -> Type\ghc-lib-parserVariable Pattern\ghc-lib-parserLazy Pattern ^ - w : w\ghc-lib-parserAs pattern ^ - w : w\ghc-lib-parserParenthesised pattern See Note [Parens in HsSyn] in GHC.Hs.Expr ^ - w : w '('&, w ')']ghc-lib-parserBang pattern ^ - w : w]ghc-lib-parserSyntactic Listw : w '['&, w ']']ghc-lib-parserTuple sub-patternsw : w '(' or '(#', w ')' or '#)']ghc-lib-parserAnonymous sum patternw : w '(#', w '#)']ghc-lib-parserConstructor Pattern]ghc-lib-parser View Pattern]ghc-lib-parser&Splice Pattern (Includes quasi-quotes)]ghc-lib-parserLiteral Pattern Used for *non-overloaded* literal patterns: Int, Char, Int, Char, String, etc.]ghc-lib-parserNatural Patternw : w ]ghc-lib-parser n+k pattern]ghc-lib-parserPattern with a type signature]ghc-lib-parser4Trees that Grow extension point for new constructors]ghc-lib-parser%Is the pattern any of combination of:(pat) pat :: Type~pat!pat x (variable)]ghc-lib-parser] p pat returns J if the pattern pat% needs parentheses under precedence p.]ghc-lib-parser] p pat checks if ] p pat is true, and if so, surrounds pat with a \. Otherwise, it simply returns pat.++\\\]]\]]]]\]]]]]]]]]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]+\\\]]\]]]]\]]]]]]]]]+\\\\\\\\\\\\\\\\]\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]None-23567>?y]ghc-lib-parserRole Annotation Declaration]ghc-lib-parserw : w , w]ghc-lib-parser#Located Role Annotation Declaration]ghc-lib-parserAnnotation Provenance]ghc-lib-parserAnnotation Declaration]ghc-lib-parserw : w , w w w]ghc-lib-parserLocated Annotation Declaration]ghc-lib-parserWarning pragma Declaration]ghc-lib-parser"Located Warning pragma Declaration]ghc-lib-parserWarning pragma Declarations]ghc-lib-parserLocated Warning Declarations]ghc-lib-parser!Documentation comment Declaration]ghc-lib-parser)Located Documentation comment Declaration]ghc-lib-parser Rule Binder]ghc-lib-parserw : w, w,w]ghc-lib-parserLocated Rule Binder]ghc-lib-parserRule Declaration]ghc-lib-parserw : w,w , w , w , w,w , w,]ghc-lib-parser-After renamer, free-vars from the LHS and RHS]ghc-lib-parserNote [Pragma source text] in GHC.Types.Basic]ghc-lib-parserForall'd type vars]ghc-lib-parserForall'd term vars, before typechecking; after typechecking this includes all forall'd vars]ghc-lib-parserLocated Rule Declaration]ghc-lib-parserRule Declarations]ghc-lib-parserLocated Rule Declarations]ghc-lib-parserForeign Declaration]ghc-lib-parserw : w , w,w , w]ghc-lib-parserLocated Foreign Declaration]ghc-lib-parserDefault Declaration]ghc-lib-parserws : w , w,w]ghc-lib-parserLocated Default Declaration]ghc-lib-parserWhich technique the user explicitly requested when deriving an instance.]ghc-lib-parserGHC's "standard" strategy, which is to implement a custom instance for the data type. This only works for certain types that GHC knows about (e.g., ', 3, , when -XDeriveFunctor is enabled, etc.)]ghc-lib-parser -XDeriveAnyClass]ghc-lib-parser -XGeneralizedNewtypeDeriving]ghc-lib-parser  -XDerivingVia^ghc-lib-parserA  ].^ghc-lib-parser+Stand-alone 'deriving instance' declaration^ghc-lib-parserThe instance type to derive. It uses an V9 because the context is allowed to be a single wildcard: !deriving instance _ => Eq (Foo a)4Which signifies that the context should be inferred.^ghc-lib-parserw : w , w, w , w,  , w,w^ghc-lib-parser3Located stand-alone 'deriving instance' declaration^ghc-lib-parserInstance Declaration^ghc-lib-parserLocated Instance Declaration^ghc-lib-parserClass Instance Declaration^ghc-lib-parserw : w , w , w,w,^ghc-lib-parserw : w&, w,^ghc-lib-parser"Located Class Instance Declaration^ghc-lib-parserFamily EquationOne equation in a type family instance declaration, data family instance declaration, or type family default. See Note [Type family instance declarations in HsSyn] See Note [Family instance declaration binders]^ghc-lib-parserw : w^ghc-lib-parserOptional quantified type vars^ghc-lib-parserFixity used in the declaration^ghc-lib-parserFamily Instance Equation^ghc-lib-parser Located Family Instance Equation^ghc-lib-parser Data Family Instance Declaration^ghc-lib-parserw : w , w,w , w w,w , w^ghc-lib-parser(Located Data Family Instance Declaration^ghc-lib-parser Type Family Instance Declaration^ghc-lib-parserw : w , w,^ghc-lib-parser(Located Type Family Instance Declaration^ghc-lib-parser)Located type family default declarations.^ghc-lib-parser MkT a b MkT :: forall b a. Eq a => MkT a b data T b where MkT1 :: Int -> T Int data T = Int MkT, Int | MkT2 data T a where Int MkT Int :: T Int ws : w, w,w, w,w, w,w, w,wdata Constructor Declaration^ghc-lib-parserTrue  =2 explicit forall False => hsq_explicit is emptyThe +: is used to anchor API annotations, AnnForall and AnnDot.^ghc-lib-parserUser-written context (if any)^ghc-lib-parserArguments; never InfixCon^ghc-lib-parser Result type^ghc-lib-parserA possible Haddock comment.^ghc-lib-parserExistentials only^ghc-lib-parser$Located data Constructor Declaration^ghc-lib-parser newtype Blah ...^ghc-lib-parser  data Blah ...^ghc-lib-parser!Located Standalone Kind Signature^ghc-lib-parser A single deriving clause of a data declaration.w : w, w , w,  , w,w^ghc-lib-parser;The user-specified strategy (if any) to use when deriving ^.^ghc-lib-parserThe types to derive.It uses Vs because, with -XGeneralizedNewtypeDeriving, we can mention type variables that aren't bound by the datatype, e.g. data T b = ... deriving (C [a])&should produce a derived instance for  C [a] (T b).^ghc-lib-parserHaskell Deriving clause^ghc-lib-parserHaskell Data type Definition^ghc-lib-parser:Declares a data type or newtype, giving its constructors  data/newtype T a =  constrs! data/newtype instance T [a] =  constrs ^ghc-lib-parserContext^ghc-lib-parserOptional kind signature.(Just k) for a GADT-style data, or  data instance decl, with explicit kind sigAlways Nothing for H98-syntax decls^ghc-lib-parserData constructorsFor data T a = T1 | T2 a the ^ s all have ^. For data T a where { T1 :: T a } the  LConDecls all have ^.^ghc-lib-parser Optional  'deriving' clause^ghc-lib-parserH if we're in an hs-boot file and the user said "type family Foo x where .."^ghc-lib-parserIf the user supplied an injectivity annotation it is represented using InjectivityAnn. At the moment this is a single injectivity condition - see Note [Injectivity annotation]. `Located name` stores the LHS of injectivity condition. `[Located name]` stores the RHS of injectivity condition. Example:.type family Foo a b c = r | r -> a c where ...,This will be represented as "InjectivityAnn r [a, c]"^ghc-lib-parserw : w, w^ghc-lib-parserLocated Injectivity Annotation^ghc-lib-parsertype Family Declaration^ghc-lib-parserw : w, w, w, w, w, w, w, w, w, w^ghc-lib-parserLocated type Family Declaration^ghc-lib-parsertype Family Result Signature^ghc-lib-parserw :^ghc-lib-parserw : w,w, w^ghc-lib-parserw : w,w, w, w^ghc-lib-parser$Located type Family Result Signature^ghc-lib-parserType or Class Group_ghc-lib-parserdoes this have a CUSK? See Note [CUSKs: complete user-supplied kind signatures]_ghc-lib-parserA type or class declaration._ghc-lib-parser type/data family T :: *->*w : w, w, w,w, w,w, w,w, w,w, w_ghc-lib-parsertype declarationw : w, w,_ghc-lib-parserdata declarationw : w, w, w, w,w w,_ghc-lib-parserw : w , w,w , wThe tcdFDs will have w, w w_ghc-lib-parserPost renameer, FVs_ghc-lib-parserType constructor_ghc-lib-parserType variables; for an associated type these include outer binders_ghc-lib-parserFixity used in the declaration_ghc-lib-parserPost renamer, CUSK flag, FVs_ghc-lib-parserPost renamer, FVs_ghc-lib-parser Context..._ghc-lib-parserFunctional deps_ghc-lib-parserMethods' signatures_ghc-lib-parserDefault methods_ghc-lib-parserAssociated types;_ghc-lib-parserAssociated type defaults_ghc-lib-parser Haddock docs_ghc-lib-parser&Located Declaration of a Type or Class_ghc-lib-parserSplice Declaration_ghc-lib-parserLocated Splice Declaration_ghc-lib-parser Haskell GroupA _ is categorised into a _" before being fed to the renamer._ghc-lib-parserA Haskell Declaration_ghc-lib-parserType or Class Declaration_ghc-lib-parserInstance declaration_ghc-lib-parserDeriving declaration_ghc-lib-parserValue declaration_ghc-lib-parserSignature declaration_ghc-lib-parserStandalone kind signature_ghc-lib-parser 'default' declaration_ghc-lib-parserForeign declaration_ghc-lib-parserWarning declaration_ghc-lib-parserAnnotation declaration_ghc-lib-parserRule declaration_ghc-lib-parser+Splice declaration (Includes quasi-quotes)_ghc-lib-parser!Documentation comment declaration_ghc-lib-parserRole annotation declaration_ghc-lib-parserPartition a list of HsDecls into function/pattern bindings, signatures, type family declarations, type family instances, and documentation comments.Panics when given a declaration that cannot be put into any of the output groups.2The primary use of this function is to implement ._ghc-lib-parserThe fixity signatures for each top-level declaration and class method in an _7. See Note [Top-level fixity signatures in an HsGroup]_ghc-lib-parserTrue  = argument is a data/newtype declaration._ghc-lib-parser!type or type instance declaration_ghc-lib-parser type class_ghc-lib-parsertype/data family declaration_ghc-lib-parsertype family declaration_ghc-lib-parseropen type family info_ghc-lib-parserclosed type family info_ghc-lib-parserdata family declaration_ghc-lib-parserDoes this declaration have a complete, user-supplied kind signature? See Note [CUSKs: complete user-supplied kind signatures]_ghc-lib-parser-Maybe return name of the result type variable_ghc-lib-parser Convert a ^ to a 6_ghc-lib-parserA short description of a DerivStrategy'._ghc-lib-parser Eliminate a ]._ghc-lib-parser Map over the via type if dealing with ]. Otherwise, return the ] unchanged.^ghc-lib-parser Here, the pats are type patterns (with kind and type bndrs). See Note [Family instance declaration binders]^ghc-lib-parser May have w : w when in a list^ghc-lib-parser May have w : w# when in a GADT constructor list^ghc-lib-parser The optional deriving clauses of a data declaration. Clauses is plural because one can specify multiple deriving clauses using the -XDerivingStrategies language extension. The list of ^s corresponds to exactly what the user requested to derive, in order. If no deriving clauses were specified, the list is empty._ghc-lib-parserWhen in a list this may havew : w]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_^^_^___________________________________________________________________________________________________________________________________^^^^^^^^^^^_^^^^^^^^^^_^^^^_____________________________^^^_^^_^_____________________^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_^^^^^^___^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]]]]]^___]]]]]]]]]]]]]]]]]]]]]]]]]___]]]]____]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^____]]]]]]_]]]]]]]]]]]]]]]]]]]_]]]]_^^^^^^^^^________________________mNone~#ghc-lib-parserGet the  associated with a known-key .##############None`ghc-lib-parseroptCoercion applies a substitution to a coercion, *and* optimises it to reduce its size`ghc-lib-parserCheck to make sure that an AxInstCo is internally consistent. Returns the conflicting branch, if it exists See Note [Conflict checking with AxiomInstCo]````None<````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````None`ghc-lib-parser#Native code generator configuration`ghc-lib-parserTarget platform`ghc-lib-parserMandatory proc alignment`ghc-lib-parser Debug level`ghc-lib-parser/Generate code to link against dynamic libraries`ghc-lib-parser Enable Position-Independent Code`ghc-lib-parser If inlining memcpy produces less than this threshold (in pseudo-instruction unit), do it`ghc-lib-parser Ditto for memset`ghc-lib-parserSplit sections`ghc-lib-parser=Size in bytes of the pre-allocated spill space on the C stack`ghc-lib-parserPerform ASM linting pass`ghc-lib-parserPerform CMM constant folding`ghc-lib-parser(x86) SSE instructions`ghc-lib-parser(x86) BMI instructions`ghc-lib-parserReturn Word sizeaghc-lib-parserReturn Word size````````````````````a````````````````````aNone aghc-lib-parser$The operation to perform atomically.aghc-lib-parserMachine-level primops; ones which we can reasonably delegate to the native code generators to handle.)Most operations are parameterised by the ` that they operate on. Some operations have separate signed and unsigned versions, and float and integer versions.Note that there are variety of places in the native code generator where we assume that the code produced for a MachOp does not introduce new blocks.bghc-lib-parserReturns J if the MachOp has commutable arguments. This is used in the platform-independent Cmm optimisations.If in doubt, return G. This generates worse code on the native routes, but is otherwise harmless.bghc-lib-parserReturns J$ if the MachOp is associative (i.e. (x+y)+z == x+(y+z)=) This is used in the platform-independent Cmm optimisations.If in doubt, return G. This generates worse code on the native routes, but is otherwise harmless.bghc-lib-parserReturns J if the MachOp is a comparison.If in doubt, return False. This generates worse code on the native routes, but is otherwise harmless.bghc-lib-parserReturns Just w6 if the operation is an integer comparison with width w, or Nothing otherwise.bghc-lib-parser.Returns the MachRep of the result of a MachOp.bghc-lib-parserThis function is used for debugging only: we can check whether an application of a MachOp is "type-correct" by checking that the MachReps of its arguments are the same as the MachOp expects. This is used when linting a CmmExpr.bghc-lib-parserThe alignment of a memcpy-ish operation.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaa$Nonegghc-lib-parser Returns the #* of the wrapper associated with the given . See Note [Primop wrappers].bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggbbbbbbbbbggggggggggggggggggbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggbbbbggggggggggggggggggbbbbbNone-/3?gghc-lib-parserSTG pretty-printing optionsgghc-lib-parserEnable cost-centresgghc-lib-parserLike x, but with an   instance that returns .gghc-lib-parser,Used as a data type index for the stgSyn ASThghc-lib-parserA top-level binding.hghc-lib-parserDoes this constructor application refer to anything in a different *Windows* DLL? If so, we can't allocate it staticallyhghc-lib-parser Type of an StgArg8Very half baked because we have lost the type arguments.hghc-lib-parser3Strip ticks of a given type from an STG expression.hghc-lib-parserStrip ticks of a given type from an STG expression returning only the expression.hghc-lib-parserGiven an alt type and whether the program is unarised, return whether the case binder is in scope.Case binders of unboxed tuple or unboxed sum type always dead after the unariser has run. See Note [Post-unarisation invariants].hghc-lib-parserUsed when constructing a term with an unused extension point that should not appear in pretty-printed output at all.hghc-lib-parser4Initialize STG pretty-printing options from DynFlagshghc-lib-parser3STG pretty-printing options used for panic messagesΏghc-lib-parser,Code gen needs to track non-global free varsgghc-lib-parser) type or an implicit forall type, depending on whether it is given a type variable or a term variable. This is used, for example, when producing the type of a lambda. Always uses Inferred binders.hghc-lib-parserh% for multiple type or value argumentshghc-lib-parserIs this expression levity polymorphic? This should be the same as saying (isKindLevPoly . typeKind . exprType) but much faster.hghc-lib-parserA more efficient version of O when we have several arguments. The first argument is just for debugging, and gives some contexthghc-lib-parserWrap the given expression in the coercion safely, dropping identity coercions and coalescing nested coercionshghc-lib-parserWraps the given expression in the source annotation, dropping the annotation if possible.hghc-lib-parser b }&depending on whether we have to use a case or let" binding for the expression (see h). It's used by the desugarer to avoid building bindings that give Core Lint a heart attack, although actually the simplifier deals with them perfectly well. See also hghc-lib-parserTests whether we have to use a case rather than let7 binding for this expression as per the invariants of N: see GHC.Core#let_app_invarianthghc-lib-parserThis guy constructs the value that the scrutinee must have given that you are in one particular branch of a casehghc-lib-parser$Extract the default case alternativehghc-lib-parserFind the case alternative corresponding to a particular constructor: panics if no such constructor existshghc-lib-parserMerge alternatives preserving order; alternatives in the first argument shadow ones in the secondhghc-lib-parserGiven: )case (C a b x y) of C b x y -> ...We want to drop the leading type argument of the scrutinee leaving the arguments to match against the patternhghc-lib-parser$Refine the default alternative to a O, if there is a unique way to do so. See Note [Refine DEFAULT case alternatives]hghc-lib-parserh' returns True of an expression that is:Safe to evaluate even if normal order eval might not evaluate the expression at all, orSafe not- to evaluate even if normal order would do soIt is usually called on arguments of unlifted type, but not always In particular, Simplify.rebuildCase calls it on lifted types when a 'case' is a plain . See the example in Note [exprOkForSpeculation: case expressions] belowPrecisely, it returns True iff: a) The expression guarantees to terminate, b) soon, c) without causing a write side effect (e.g. writing a mutable variable) d) without throwing a Haskell exception e) without risking an unchecked runtime exception (array out of bounds, divide by zero)For exprOkForSideEffects( the list is the same, but omitting (e).Note that exprIsHNF implies exprOkForSpeculation exprOkForSpeculation implies exprOkForSideEffects3See Note [PrimOp can_fail and has_side_effects] in GHC.Builtin.PrimOps and Note [Transformations affected by can_fail and has_side_effects];As an example of the considerations in this test, consider: -let x = case y# +# 1# of { r# -> I# r# } in Ebeing translated to: 3case y# +# 1# of { r# -> let x = I# r# in E }We can only do this if the y + 1 is ok for speculation: it has no side effects, and can't diverge or raise an exception.hghc-lib-parserh' returns True of an expression that is:Safe to evaluate even if normal order eval might not evaluate the expression at all, orSafe not- to evaluate even if normal order would do soIt is usually called on arguments of unlifted type, but not always In particular, Simplify.rebuildCase calls it on lifted types when a 'case' is a plain . See the example in Note [exprOkForSpeculation: case expressions] belowPrecisely, it returns True iff: a) The expression guarantees to terminate, b) soon, c) without causing a write side effect (e.g. writing a mutable variable) d) without throwing a Haskell exception e) without risking an unchecked runtime exception (array out of bounds, divide by zero)For exprOkForSideEffects( the list is the same, but omitting (e).Note that exprIsHNF implies exprOkForSpeculation exprOkForSpeculation implies exprOkForSideEffects3See Note [PrimOp can_fail and has_side_effects] in GHC.Builtin.PrimOps and Note [Transformations affected by can_fail and has_side_effects];As an example of the considerations in this test, consider: -let x = case y# +# 1# of { r# -> I# r# } in Ebeing translated to: 3case y# +# 1# of { r# -> let x = I# r# in E }We can only do this if the y + 1 is ok for speculation: it has no side effects, and can't diverge or raise an exception.hghc-lib-parser:exprIsHNF returns true for expressions that are certainly already evaluated to head normal form. This is used to decide whether it's ok to change: case x of _ -> einto: e-and to decide whether it's safe to discard a . So, it does not treat variables as evaluated, unless they say they are. However, it does treat partial applications and constructor applications as values, even if their arguments are non-trivial, provided the argument type is lifted. For example, both of these are values: &(:) (f x) (map f xs) map (...redex...)because & on such things completes immediately.3For unlifted argument types, we have to be careful: C (f x :: Int#)Suppose f x diverges; then C (f x)1 is not a value. However this can't happen: see GHC.Core#let_app_invariant. This invariant states that arguments of unboxed type must be ok-for-speculation (or trivial).hghc-lib-parser Similar to h but includes CONLIKE functions as well as data constructors. Conlike arguments are considered interesting by the inliner.hghc-lib-parserCan we bind this N at the top level?hghc-lib-parserCheck if the expression is zero or more Ticks wrapped around a literal string.hghc-lib-parserExtract a literal string from an expression that is zero or more Ticks wrapped around a literal string. Returns Nothing if the expression has a different shape. Used to "look through" Ticks in places that need to handle literal strings.hghc-lib-parserA cheap equality test which bales out fast! If it returns True the arguments are definitely equal, otherwise, they may or may not be equal.hghc-lib-parser9Cheap expression equality test, can ignore ticks by type.hghc-lib-parserFinds differences between core expressions, modulo alpha and renaming. Setting top means that the IdInfo6 of bindings will be checked for differences as well.hghc-lib-parser-Finds differences between core bindings, see diffExpr.The main problem here is that while we expect the binds to have the same order in both lists, this is not guaranteed. To do this properly we'd either have to do some sort of unification or check all possible mappings, which would be seriously expensive. So instead we simply match single bindings as far as we can. This leaves us just with mutually recursive and/or mismatching bindings, which we then speculatively match by ordering them. It's by no means perfect, but gets the job done well enough.hghc-lib-parserTrue if the type has no non-bottom elements, e.g. when it is an empty datatype, or a GADT with non-satisfiable type parameters, e.g. Int :~: Bool. See Note [Bottoming expressions]See Note [No alternatives lint check] for another use of this function.hghc-lib-parser-collectMakeStaticArgs (makeStatic t srcLoc e) yields Just (makeStatic, t, srcLoc, e).Returns Nothing for every other expression.hghc-lib-parserDoes this binding bind a join point (or a recursive group of join points)?hghc-lib-parserCase alternative constructorghc-lib-parser!Things bound by the pattern matchghc-lib-parser*The type arguments to the case alternativehghc-lib-parserType constructor of scrutinee's type (used to prune possibilities)ghc-lib-parserAnd its type argumentsghc-lib-parser imposs_cons: constructors known to be impossible due to the form of the scrutineeghc-lib-parser Alternativeshghc-lib-parser$Uniques for constructing new bindersghc-lib-parser.Multiplicity annotation of the case expressionghc-lib-parser$Type constructor of scrutinee's typeghc-lib-parser"Type arguments of scrutinee's typeghc-lib-parser3Constructors that cannot match the DEFAULT (if any)ghc-lib-parserJ', if a default alt was replaced with a O@OOOhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh@hhhhhhhhhhhhhhhhhhhhhhhhhhhOOhOhhhhhhhhhhhhKNone&1 ghc-lib-parserA disjunctive bag of "s, representing a refinement type.ghc-lib-parserAn inert set of canonical (i.e. mutually compatible) term and type constraints.hghc-lib-parser$The type oracle state. A poor man's : The invariant is that all constraints in there are mutually compatible.hghc-lib-parserInformation about an #. Stores positive (h) facts, like  x ~ Just 42, and negative (h5) facts, like "x is not (:)". Also caches the type (h), the h of a COMPLETE set (h).+Subject to Note [The Pos/Neg invariant] in GHC.HsToCore.PmCheck.Oracle.hghc-lib-parserThe type of the variable. Important for rejecting possible GADT constructors or incompatible pattern synonyms (Just42 :: Maybe Int).hghc-lib-parserPositive info: h apps it is (i.e. x ~ [Just y, PatSyn z]), all at the same time (i.e. conjunctive). We need a list because of nested pattern matches involving pattern synonym case x of { Just y -> case x of PatSyn z -> ... } However, no more than one RealDataCon in the list, otherwise contradiction because of generativity.hghc-lib-parserNegative info: A list of h*s that it cannot match. Example, assuming 0 data T = Leaf Int | Branch T T | Node Int T then x /~ [Leaf, Node] means that x cannot match a Leaf or Node, and hence can only match Branch!. Is orthogonal to anything from h, in the sense that i returns PossiblyOverlap for any pairing between h and h.hghc-lib-parserA cache of the associated COMPLETE sets. At any time a superset of possible constructors of each COMPLETE set. So, if it's not in here, we can't possibly match on it. Complementary to h. We still need it to recognise completion of a COMPLETE set efficiently for large enums.hghc-lib-parserThe term oracle state. Stores h for encountered #s. These entries are possibly shared when we figure out that two variables must be equal, thus represent the same set of values.!See Note [TmState invariants] in GHC.HsToCore.PmCheck.Oracle.hghc-lib-parserFacts about term variables. Deterministic env, so that we generate deterministic error messages.hghc-lib-parserAn environment for looking up whether we already encountered semantically equivalent expressions that we want to represent by the same # representative.hghc-lib-parserA %, in which entries can be shared by multiple #,s. Merge equivalence classes of two Ids by i" and set the entry of an Id with i.hghc-lib-parserEither  Indirect x., meaning the value is represented by that of x , or an Entry6 containing containing the actual value it represents.hghc-lib-parser#A data type caching the results of completeMatchConLikes with support for deletion of constructors that were already matched on.hghc-lib-parserEach ConLikeSet is a (subset of) the constructors in a COMPLETE set NonEmpty because the empty case would mean that the type has no COMPLETE set at all, for which we have h.hghc-lib-parserNo COMPLETE set for this type (yet). Think of overloaded literals.hghc-lib-parser)Represents the head of a match against a , or literal. Really similar to O.hghc-lib-parserUndecidable semantic equality result. See Note [Undecidable Equality for PmAltCons]ighc-lib-parserLiterals (simple and overloaded ones) for pattern match checking.-See Note [Undecidable Equality for PmAltCons]ighc-lib-parser Type of a iighc-lib-parserWhether there is a h in the h that compares i to the given h according to i.ighc-lib-parser'We can't in general decide whether two h?s match the same set of values. In addition to the reasons in Ϗ and Џ, a h2 might or might not represent the same value as a h1. See Note [Undecidable Equality for PmAltCons]. Just True ==> Surely equal Just False. ==> Surely different (non-overlapping, even!)Nothing" ==> Equality relation undecidable.Examples (omitting some constructor wrapping):/eqPmAltCon (LitInt 42) (LitInt 1) == Just False: Lit equality is decidable0eqPmAltCon (DataCon A) (DataCon B) == Just False": DataCon equality is decidable4eqPmAltCon (LitOverInt 42) (LitOverInt 1) == Nothing$: OverLit equality is undecidable-eqPmAltCon (PatSyn PA) (PatSyn PB) == Nothing#: PatSyn equality is undecidable-eqPmAltCon (DataCon I#) (LitInt 1) == Nothing: DataCon to Lit comparisons are undecidable without reasoning about the wrapped Int#5eqPmAltCon (LitOverInt 1) (LitOverInt 1) == Just True2: We assume reflexivity for overloaded literals/eqPmAltCon (PatSyn PA) (PatSyn PA) == Just True/: We assume reflexivity for Pattern Synonymsighc-lib-parser Type of a highc-lib-parserlookupSDIE env x looks up an entry for x, looking through all hs until it finds a shared h.ighc-lib-parser>Check if two variables are part of the same equivalence class.ighc-lib-parsersetIndirectSDIE env x y sets x's h to  Indirect y, thereby merging x's equivalence class into y#'s. This will discard all info on x!ighc-lib-parsersetEntrySDIE env x a sets the h x is associated with to a1, thereby modifying its whole equivalence class.ighc-lib-parserSyntactic equality.ighc-lib-parserSyntactic equality.ighc-lib-parserNot user-facing.ighc-lib-parserNot user-facing.ighc-lib-parserNot user-facing.hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiihhhiihiiiiiiiiihhhhhiiiiihhhhhhiiiiiihhhhhhhhhhhhhhhiNone"ighc-lib-parser$An environment for substituting for #sighc-lib-parser'A substitution environment, containing #, , and # substitutions.6Some invariants apply to how you use the substitution: %Note [The substitution invariant] in GHC.Core.TyCo.Subst(Note [Substitutions apply only once] in GHC.Core.TyCo.Substighc-lib-parserFind the in-scope set: see GHC.Core.TyCo.Subst" Note [The substitution invariant]ighc-lib-parserRemove all substitutions for #s and s that might have been built up while preserving the in-scope setighc-lib-parserAdd a substitution for an # to the i: you must ensure that the in-scope set is such that TyCoSubst Note [The substitution invariant] holds after extending the substitution like thisighc-lib-parserAdds multiple # substitutions to the i : see also iighc-lib-parserAdd a substitution for a  to the i The  *must* be a real TyVar, and not a CoVar You must ensure that the in-scope set is such that GHC.Core.TyCo.Subst Note [The substitution invariant] holds after extending the substitution like this.ighc-lib-parserAdds multiple  substitutions to the i : see also iighc-lib-parserAdd a substitution from a # to a  to the i4: you must ensure that the in-scope set satisfies GHC.Core.TyCo.Subst Note [The substitution invariant] after extending the substitution like thisighc-lib-parserAdd a substitution appropriate to the thing being substituted (whether an expression, type, or coercion). See also i, i, iighc-lib-parserAdd a substitution as appropriate to each of the terms being substituted (whether expressions, types, or coercions). See also i.ighc-lib-parserFind the substitution for an # in the iighc-lib-parserFind the substitution for a  in the iighc-lib-parserSimultaneously substitute for a bunch of variables No left-right shadowing ie the substitution for (x y. e) a1 a2 so neither x nor y scope over a1 a2ighc-lib-parserAdd the  to the in-scope set, but do not remove any existing substitutions for itighc-lib-parserAdd the  to the in-scope set: as a side effect, and remove any existing substitutions for itighc-lib-parserAdd the  s to the in-scope set: see also iighc-lib-parserOptimized version of i that can be used if you are certain all the things being added are #s and hence none are s or #sighc-lib-parser.substExpr applies a substitution to an entire N1. Remember, you may only apply the substitution once/: See Note [Substitutions apply only once] in GHC.Core.TyCo.SubstDo *not* attempt to short-cut in the case of an empty substitution! See Note [Extending the Subst]ighc-lib-parser"Apply a substitution to an entire N$, additionally returning an updated i2 that should be used by subsequent substitutions.ighc-lib-parser"Apply a substitution to an entire N$, additionally returning an updated i2 that should be used by subsequent substitutions.ighc-lib-parserDe-shadowing the program is sometimes a useful pre-pass. It can be done simply by running over the bindings with an empty substitution, because substitution returns a result that has no-shadowing guaranteed.(Actually, within a single type* there might still be shadowing, because i is a no-op for the empty substitution, but that's probably OK.) Aug 09This function is not used in GHC at the moment, but seems so short and simple that I'm going to leave it hereighc-lib-parserSubstitutes a " for another one according to the i- given, returning the result and an updated i3 that should be used by subsequent substitutions.  is preserved by this process, although it is substituted into appropriately.ighc-lib-parserApplies i to a number of s, accumulating a new i left-to-rightighc-lib-parser,Substitute in a mutually recursive group of #sighc-lib-parserVery similar to i , but it always allocates a new  for each variable in its output. It substitutes the IdInfo though.ighc-lib-parserApplies i to a number of #8s, accumulating a final substitution from left to rightighc-lib-parser$Clone a mutually recursive group of #sighc-lib-parserSee ;ighc-lib-parserSee ;ighc-lib-parserSubstitute into some ! with regard to the supplied new #.ighc-lib-parserSubstitutes for the #s within an unfoldingighc-lib-parserSubstitutes for the #s within an unfoldingighc-lib-parserSubstitutes for the # s within the  WorkerInfo given the new function #:%;;iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii:ii;i%iiiiiiiiiiiiiiiiiiiiiiiiii;iiiiiiiiiiiiiiiiiiiiiiiiiiNoneighc-lib-parsermanifestArity sees how many leading value lambdas there are, after looking through castsighc-lib-parser!An approximate, fast, version of iighc-lib-parser etaExpand n e1 returns an expression with the same meaning as e, but with arity n.Given: e' = etaExpand n eWe should have that: ty = exprType e = exprType e'ighc-lib-parserSplit an expression into the given number of binders and a body, eta-expanding if necessary. Counts value *and* type binders.iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiNone& jjjjNone'( jghc-lib-parserA SwitchPlan abstractly describes how a Switch statement ought to be implemented. See Note [createSwitchPlan]jghc-lib-parser>A value of type SwitchTargets contains the alternatives for a  CmmSwitch value, and knows whether the value is signed, the possible range, an optional default value and a map from values to jump labels.jghc-lib-parserThe smart constructor mkSwitchTargets normalises the map a bit: * No entries outside the range * No entries equal to the default * No default if all elements have explicit valuesjghc-lib-parser7Changes all labels mentioned in the SwitchTargets valuejghc-lib-parserReturns the list of non-default branches of the SwitchTargets valuejghc-lib-parser3Return the default label of the SwitchTargets valuejghc-lib-parser+Return the range of the SwitchTargets valuejghc-lib-parser.Return whether this is used for a signed valuejghc-lib-parserswitchTargetsToTable creates a dense jump table, usable for code generation.Also returns an offset to add to the value; the list is 0-based on the result of that addition.The conversion from Integer to Int is a bit of a wart, as the actual scrutinee might be an unsigned word, but it just works, due to wrap-around arithmetic (as verified by the CmmSwitchTest test case).jghc-lib-parser ??kkk??kkkNone >? kghc-lib-parserSets of registerskghc-lib-parser'Parameters: 1. Identifier 2. Typekghc-lib-parserA stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.kghc-lib-parserReturns an alignment in bytes of a CmmExpr when it's a statically known integer constant, otherwise returns an alignment of 1 byte. The caller is responsible for using with a sensible CmmExpr argument.````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkNone PllllllllllllNone llllllllllllNone llllllllllNone llllllllllNone 4llllllllllNone kllllllllllNone llllllllllNone llllllllllNone lghc-lib-parserReturns J if this global register is stored in a caller-saves machine register.lghc-lib-parserHere is where the STG register map is defined for each target arch. The order matters (for the llvm backend anyway)! We must make sure to maintain the order here with the order used in the LLVM calling conventions. Note that also, this isn't all registers, just the ones that are currently possibly mapped to real registers.llllllllllNone'(2>? - lghc-lib-parserTick scope identifier, allowing us to reason about what annotations in a Cmm block should scope over. We especially take care to allow optimisations to reorganise blocks without losing tick association in the process.lghc-lib-parserThe global scope is the "root" of the scope graph. Every scope is a sub-scope of the global scope. It doesn't make sense to add ticks to this scope. On the other hand, this means that setting this scope on a block means no ticks apply to it.lghc-lib-parserConstructs a new sub-scope to an existing scope. This allows us to translate Core-style scoping rules (see  tickishScoped2) into the Cmm world. Suppose the following code:tick 1# case ... of A -> tick 2 ... B -> tick 3 ...We want the top-level tick annotation to apply to blocks generated for the A and B alternatives. We can achieve that by generating tick 1 into a block with scope a, while the code for alternatives A and B gets generated into sub-scopes a/b and a/c respectively.lghc-lib-parserA combined scope scopes over everything that the two given scopes cover. It is therefore a sub-scope of either scope. This is required for optimisations. Consider common block elimination: A -> tick 2, case ... of C -> [common] B -> tick 3 case ... of D -> [common]We will generate code for the C and D alternatives, and figure out afterwards that it's actually common code. Scoping rules dictate that the resulting common block needs to be covered by both tick 2 and tick 3, therefore we need to construct a scope that is a child to *both* scope. Now we can do that - if we assign the scopes ac and bd to the common-ed up blocks, the new block could have a combined tick scope ac+bd, which both tick 2 and tick 3 apply to.lghc-lib-parser)Tickish in Cmm context (annotations only)lghc-lib-parserA convention maps a list of values (function arguments or return values) to registers or stack locations.lghc-lib-parser top-level Haskell functions use NativeDirectCall, which maps arguments to registers starting with R2, according to how many registers are available on the platform. This convention ignores R1, because for a top-level function call the function closure is implicit, and doesn't need to be passed.lghc-lib-parsernon-top-level Haskell functions, which pass the address of the function closure in R1 (regardless of whether R1 is a real register or not), and the rest of the arguments in registers or on the stack.lghc-lib-parsera native return. The convention for returns depends on how many values are returned: for just one value returned, the appropriate register is used (R1, F1, etc.). regardless of whether it is a real register or not. For multiple values returned, they are mapped to registers or the stack.lghc-lib-parser/Slow entry points: all args pushed on the stacklghc-lib-parserEntry to the garbage collector: uses the node reg! (TODO: I don't think we need this --SDM)lghc-lib-parserChecks whether two tick scopes are sub-scopes of each other. True if the two scopes are equal.lghc-lib-parserCombine two tick scopes. The new scope should be sub-scope of both parameters. We simplify automatically if one tick scope is a sub-scope of the other already.llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllNone '(/ 3 mghc-lib-parser%Static data, after SRTs are generatedmghc-lib-parser8a literal value, size given by cmmLitRep of the literal.mghc-lib-parser uninitialised data, N bytes longmghc-lib-parser1string of 8-bit values only, not zero terminated.mghc-lib-parseran embedded binary filemghc-lib-parser!Info table as a haskell data typemghc-lib-parserCmmTopInfo is attached to each CmmDecl (see defn of CmmGroup), and contains the extra info (beyond the executable code) that belongs to that CmmDecl.mghc-lib-parserA top-level chunk, abstracted over the type of the contents of the basic blocks (Cmm or instructions are the likely instantiations).mghc-lib-parserRaw1 cmm group (TODO (osa): not sure what that means)mghc-lib-parserCmm group with SRTsmghc-lib-parserCmm group before SRT generationmghc-lib-parser?Should a data in this section be considered constant at runtimemghc-lib-parserThe branch block id is that of the first block in the branch, which is that branch's entry pointMMMMMMMM````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmMMMMMMMmmmMNone 7mmmmmmmmmmmmmm Safe-Inferred8: 7mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNone2 ;mghc-lib-parserAn HValueRef with a finalizermghc-lib-parserA reference to a remote value. These are allocated and freed explicitly.mghc-lib-parserMake a reference to a local value that we can send remotely. This reference will keep the value that it refers to alive until m is called.mghc-lib-parserConvert an HValueRef to an HValue. Should only be used if the HValue originated in this process.mghc-lib-parser4Release an HValueRef that originated in this processmghc-lib-parser Create a m from a m). The finalizer should arrange to call  freeHValueRef on the m. (since this function needs to be called in the process that created the m3, it cannot be called directly from the finalizer).mghc-lib-parserUse a mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"(c) The University of Glasgow 2015/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportableSafe nnnnnnnn"(c) The University of Glasgow 2003/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportable Trustworthy'(./3589> Νnghc-lib-parserTo avoid duplication between kinds and types, they are defined to be the same. Naturally, you would never have a type be n% and you would never have a kind be n, but many of the other constructors are shared. Note that the kind Bool is denoted with n, not n'. Similarly, tuple kinds are made with n, not n.nghc-lib-parser&Annotation target for reifyAnnotationsnghc-lib-parserRole annotationsnghc-lib-parser nominalnghc-lib-parser representationalnghc-lib-parser phantomnghc-lib-parser _nghc-lib-parser 2nghc-lib-parser "Hello"nghc-lib-parserInjectivity annotationnghc-lib-parserType family result signaturenghc-lib-parser no signaturenghc-lib-parser knghc-lib-parser = r, = (r :: k)nghc-lib-parser anghc-lib-parser (a :: k)nghc-lib-parser anghc-lib-parser {a}nghc-lib-parser forall . => nghc-lib-parser forall -> nghc-lib-parser T a bnghc-lib-parser T @k tnghc-lib-parser t :: knghc-lib-parser anghc-lib-parser Tnghc-lib-parser 'Tnghc-lib-parser T + Tnghc-lib-parser T + TSee  Language.Haskell.TH.Syntax#infixnghc-lib-parser (T)nghc-lib-parser (,), (,,), etc.nghc-lib-parser (#,#), (#,,#), etc.nghc-lib-parser (#|#), (#||#), etc.nghc-lib-parser ->nghc-lib-parser FUNnghc-lib-parser ~nghc-lib-parser []nghc-lib-parser '(), '(,), '(,,), etc.nghc-lib-parser '[]nghc-lib-parser (':)nghc-lib-parser *nghc-lib-parser  Constraintnghc-lib-parser  0,1,2, etc.nghc-lib-parser _nghc-lib-parser ?x :: tnghc-lib-parser"A pattern synonym's argument type.nghc-lib-parser pattern P {x y z} = pnghc-lib-parser pattern {x P y} = pnghc-lib-parser pattern P { {x,y,z} } = pnghc-lib-parser#A pattern synonym's directionality.nghc-lib-parser pattern P x {<-} pnghc-lib-parser pattern P x {=} pnghc-lib-parser  pattern P x {<-} p where P x = enghc-lib-parserAs of template-haskell-2.11.0.0, n has been replaced by n.nghc-lib-parserAs of template-haskell-2.11.0.0, n has been replaced by n.nghc-lib-parserAs of template-haskell-2.11.0.0, n has been replaced by n.nghc-lib-parser C { {-# UNPACK #-} !}anghc-lib-parserA single data constructor.The constructors for n can roughly be divided up into two categories: those for constructors with "vanilla" syntax (n, n, and n0), and those for constructors with GADT syntax (n and n). The n constructor, which quantifies additional type variables and class contexts, can surround either variety of constructor. However, the type variables that it quantifies are different depending on what constructor syntax is used:If a n: surrounds a constructor with vanilla syntax, then the n will only quantify  existential type variables. For example: % data Foo a = forall b. MkFoo a b In MkFoo, n will quantify b , but not a.If a n7 surrounds a constructor with GADT syntax, then the n will quantify all8 type variables used in the constructor. For example: > data Bar a b where MkBar :: (a ~ b) => c -> MkBar a b In MkBar, n will quantify a, b, and c.nghc-lib-parser C Int anghc-lib-parser C { v :: Int, w :: a }nghc-lib-parser Int :+ anghc-lib-parser forall a. Eq a => C [a]nghc-lib-parser C :: a -> b -> T b Intnghc-lib-parser C :: { v :: Int } -> T b Intnghc-lib-parserUnlike n and n, n refers to the strictness that the compiler chooses for a data constructor field, which may be different from what is written in source code. See q for more information.nghc-lib-parser C anghc-lib-parser C {~}anghc-lib-parser C {!}anghc-lib-parser C anghc-lib-parser C { {-# NOUNPACK #-} } anghc-lib-parser C { {-# UNPACK #-} } anghc-lib-parserSince the advent of ConstraintKinds, constraints are really just types. Equality constraints use the n constructor. Constraints may also be tuples of other constraints.nghc-lib-parser +{ {-# COMPLETE C_1, ..., C_i [ :: T ] #-} }oghc-lib-parserOne equation of a type family instance or closed type family. The arguments are the left-hand-side type and the right-hand-side result.3For instance, if you had the following type family: type family Foo (a :: k) :: k where forall k (a :: k). Foo @k a = a The  Foo @k a = a* equation would be represented as follows: o (I [n k, n a (n k)]) (n (n (n ''Foo) (n k)) (n a)) (n a) oghc-lib-parserCommon elements of o and o. By analogy with "head" for type classes and type class instances as defined in 0Type classes: an exploration of the design space, the TypeFamilyHead; is defined to be the elements of the declaration between  type family and where.oghc-lib-parser8A pattern synonym's type. Note that a pattern synonym's fully specified type has a peculiar shape coming with two forall quantifiers and two constraint contexts. For example, consider the pattern synonym 'pattern P x1 x2 ... xn = *P's complete type is of the following form pattern P :: forall universals. required constraints => forall existentials. provided constraints => t1 -> t2 -> ... -> tn -> tconsisting of four parts: the (possibly empty lists of) universally quantified type variables and required constraints on them.the (possibly empty lists of) existentially quantified type variables and the provided constraints on them. the types t1, t2, .., tn of x1, x2, .., xn, respectively the type t of , mentioning only universals.Pattern synonym types interact with TH when (a) reifying a pattern synonym, (b) pretty printing, or (c) specifying a pattern synonym's type signature explicitly:/Reification always returns a pattern synonym's fully( specified type in abstract syntax.Pretty printing via  abbreviates a pattern synonym's type unambiguously in concrete syntax: The rule of thumb is to print initial empty universals and the required context as () =>, if existentials and a provided context follow. If only universals and their required context, but no existentials are specified, only the universals and their required context are printed. If both or none are specified, so both (or none) are printed.>When specifying a pattern synonym's type explicitly with o either one of the universals, the existentials, or their contexts may be left empty.See the GHC user's guide for more information on pattern synonyms and their types:  https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#pattern-synonyms.oghc-lib-parser T x = A x | B (T x) deriving (Z,W) deriving stock Eq }oghc-lib-parser { newtype Cxt x => T x = A (B x) deriving (Z,W Q) deriving stock Eq }oghc-lib-parser { type T x = (x,x) }oghc-lib-parser  { class Eq a => Ord a where ds }oghc-lib-parser { instance {-# OVERLAPS #-} Show w => Show [w] where ds }oghc-lib-parser { length :: [a] -> Int }oghc-lib-parser { type TypeRep :: k -> Type }oghc-lib-parser -{ foreign import ... } { foreign export ... }oghc-lib-parser { infix 3 foo }oghc-lib-parser { {-# INLINE [1] foo #-} }oghc-lib-parser { data family T a b c :: * }oghc-lib-parser { data instance Cxt x => T [x] = A x | B (T x) deriving (Z,W) deriving stock Eq }oghc-lib-parser { newtype instance Cxt x => T [x] = A (B x) deriving (Z,W) deriving stock Eq }oghc-lib-parser { type instance ... }oghc-lib-parser -{ type family T a b c = (r :: *) | r -> a b }oghc-lib-parser 3{ type family F a b = (r :: *) | r -> a where ... }oghc-lib-parser ({ type role T nominal representational }oghc-lib-parser 0{ deriving stock instance Ord a => Ord (Foo a) }oghc-lib-parser &{ default size :: Data a => a -> Int }oghc-lib-parser{ pattern P v1 v2 .. vn <- p }! unidirectional or { pattern P v1 v2 .. vn = p }! implicit bidirectional or ?{ pattern P v1 v2 .. vn <- p where P v1 v2 .. vn = e } explicit bidirectionalalso, besides prefix pattern synonyms, both infix and record pattern synonyms are supported. See n for detailsoghc-lib-parser#A pattern synonym's type signature.oghc-lib-parser  { ?x = expr }Implicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.oghc-lib-parser p <- eoghc-lib-parser { let { x=e1; y=e2 } }oghc-lib-parser eoghc-lib-parserx <- e1 | s2, s3 | s4 (in o)oghc-lib-parser rec { s1; s2 }oghc-lib-parser f x { | odd x } = xoghc-lib-parser &f x { | Just y <- x, Just z <- y } = zoghc-lib-parser +f p { | e1 = e2 | e3 = e4 } where dsoghc-lib-parser f p { = e } where dsoghc-lib-parser { x }oghc-lib-parser "data T1 = C1 t1 t2; p = {C1} e1 e2oghc-lib-parser  { 5 or 'c'}oghc-lib-parser { f x }oghc-lib-parser  { f @Int }oghc-lib-parser %{x + y} or {(x+)} or {(+ x)} or {(+)}oghc-lib-parser {x + y}See  Language.Haskell.TH.Syntax#infixoghc-lib-parser { (e) }See  Language.Haskell.TH.Syntax#infixoghc-lib-parser { \ p1 p2 -> e }oghc-lib-parser { \case m1; m2 }oghc-lib-parser  { (e1,e2) }The A+ is necessary for handling tuple sections. (1,) translates to 'TupE [Just (LitE (IntegerL 1)),Nothing]oghc-lib-parser { (# e1,e2 #) }The A+ is necessary for handling tuple sections.  (# 'c', #) translates to -UnboxedTupE [Just (LitE (CharL 'c')),Nothing]oghc-lib-parser  { (#|e|#) }oghc-lib-parser { if e1 then e2 else e3 }oghc-lib-parser { if | g1 -> e1 | g2 -> e2 }oghc-lib-parser { let { x=e1; y=e2 } in e3 }oghc-lib-parser { case e of m1; m2 }oghc-lib-parser{ do { p <- e1; e2 } }1 or a qualified do if the module name is presentoghc-lib-parser!{ mdo { x <- e1 y; y <- e2 x; } }2 or a qualified mdo if the module name is presentoghc-lib-parser  { [ (x,y) | x <- xs, y <- ys ] }3The result expression of the comprehension is the last of the os, and should be a o.E.g. translation: [ f x | x <- xs ] CompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))]oghc-lib-parser { [ 1 ,2 .. 10 ] }oghc-lib-parser  { [1,2,3] }oghc-lib-parser  { e :: t }oghc-lib-parser { T { x = y, z = w } }oghc-lib-parser { (f x) { z = w } }oghc-lib-parser  { static e }oghc-lib-parser { _x }This is used for holes or unresolved identifiers in AST quotes. Note that it could either have a variable name or constructor name.oghc-lib-parser{ #x } ( Overloaded label )oghc-lib-parser{ ?x } ( Implicit parameter )oghc-lib-parser f { p1 p2 = body where decs }oghc-lib-parser $case e of { pat -> body where decs }oghc-lib-parserPattern in Haskell given in {}oghc-lib-parser  { 5 or 'c' }oghc-lib-parser { x }oghc-lib-parser  { (p1,p2) }oghc-lib-parser { (# p1,p2 #) }oghc-lib-parser  { (#|p|#) }oghc-lib-parser "data T1 = C1 t1 t2; {C1 p1 p1} = eoghc-lib-parser foo ({x :+ y}) = eoghc-lib-parser foo ({x :+ y}) = eSee  Language.Haskell.TH.Syntax#infixoghc-lib-parser {(p)}See  Language.Haskell.TH.Syntax#infixoghc-lib-parser { ~p }oghc-lib-parser { !p }oghc-lib-parser  { x @ p }oghc-lib-parser { _ }oghc-lib-parser f (Pt { pointx = x }) = g xoghc-lib-parser  { [1,2,3] }oghc-lib-parser  { p :: t }oghc-lib-parser  { e -> p }oghc-lib-parser#Raw bytes embedded into the binary.Avoid using Bytes constructor directly as it is likely to change in the future. Use helpers such as mkBytes$ in Language.Haskell.TH.Lib instead.oghc-lib-parserPointer to the dataoghc-lib-parserOffset from the pointerpghc-lib-parserNumber of bytes Maybe someday: , bytesAlignement :: Word -- ^ Alignement constraint , bytesReadOnly :: Bool -- ^ Shall we embed into a read-only -- section or not , bytesInitialized :: Bool -- ^ False: only use p to allocate -- an uninitialized regionpghc-lib-parserUsed for overloaded and non-overloaded literals. We don't have a good way to represent non-overloaded literals at the moment. Maybe that doesn't matter?pghc-lib-parser!A primitive C-style string, type Տpghc-lib-parserSome raw bytes, type Տ:pghc-lib-parserp describes a single instance of a class or type function. It is just a o,, but guaranteed to be one of the following:o (with empty [o])o or o (with empty derived [p])opghc-lib-parserIn p#, is the type constructor unlifted?pghc-lib-parserIn p, arity of the type constructorpghc-lib-parserIn o, n, and o, the total number of ps. For example, (#|#) has a p of 2.pghc-lib-parserIn o and o=, the number associated with a particular data constructor. ps are one-indexed and should never exceed the value of its corresponding p. For example:(#_|#) has p 1 (out of a total p of 2)(#|_#) has p 2 (out of a total p of 2)pghc-lib-parserIn p and p", name of the parent class or typepghc-lib-parserObtained from q in the p Monad.pghc-lib-parser'Contains the import list of the module.pghc-lib-parserObtained from q in the p Monad.pghc-lib-parser-A class, with a list of its visible instancespghc-lib-parserA class methodpghc-lib-parserA "plain" type constructor. "Fancier" type constructors are returned using p or p as appropriate. At present, this reified declaration will never have derived instances attached to it (if you wish to check for an instance, see q).pghc-lib-parserA type or data family, with a list of its visible instances. A closed type family is returned with 0 instances.pghc-lib-parserA "primitive" type constructor, which can't be expressed with a o . Examples: (->), Int#.pghc-lib-parserA data constructorpghc-lib-parserA pattern synonympghc-lib-parser7A "value" variable (as opposed to a type variable, see p).The  Maybe Dec field contains Just the declaration which defined the variable - including the RHS of the declaration - or else Nothing, in the case where the RHS is unavailable to the compiler. At present, this value is always Nothing: returning the RHS has not yet been implemented because of lack of interest.pghc-lib-parserA type variable.The Type field contains the type which underlies the variable. At present, this is always n theName5, but future changes may permit refinement of this.pghc-lib-parserUniq5 is used by GHC to distinguish names from each other.pghc-lib-parser Variablespghc-lib-parserData constructorspghc-lib-parserType constructors and classes; Haskell has them in the same name space for now.pghc-lib-parser&An unqualified name; dynamically boundpghc-lib-parser#A qualified name; dynamically boundpghc-lib-parserA unique local namepghc-lib-parser&Local name bound outside of the TH ASTpghc-lib-parserGlobal name bound outside of the TH AST: An original name (occurrences only, not binders) Need the namespace too to be sure which thing we are namingpghc-lib-parser7An abstract type representing names in the syntax tree.ps can be constructed in several ways, which come with different name-capture guarantees (see &Language.Haskell.TH.Syntax#namecapture% for an explanation of name capture):the built-in syntax 'f and ''T4 can be used to construct names, The expression 'f gives a Name which refers to the value f currently in scope, and ''T gives a Name which refers to the type T7 currently in scope. These names can never be captured.q and q are similar to 'f and ''T respectively, but the Names are looked up at the point where the current splice is being run. These names can never be captured.p monadically generates a new name, which can never be captured.q generates a capturable name.Names constructed using newName and mkName" may be used in bindings (such as  let x = ... or x -> ...), but names constructed using lookupValueName, lookupTypeName, 'f, ''T may not.pghc-lib-parserObtained from q and .pghc-lib-parserA p instance can have any of its values turned into a Template Haskell expression. This is needed when a value used within a Template Haskell quotation is bound outside the Oxford brackets ( [| ... |] or  [|| ... ||]*) but not at the top level. As an example: 2add1 :: Int -> Q (TExp Int) add1 x = [|| x + 1 ||]2Template Haskell has no way of knowing what value x: will take on at splice-time, so it requires the type of x to be an instance of p.A p instance must satisfy  $(lift x) D x and $$(liftTyped x) D x for all x, where $(...) and $$(...) are Template Haskell splices. It is additionally expected that p x D p (p x).p6 instances can be derived automatically by use of the  -XDeriveLift GHC language extension: {-# LANGUAGE DeriveLift #-} module Foo where import Language.Haskell.TH.Syntax data Bar a = Bar1 a (Bar a) | Bar2 String deriving LiftLevity-polymorphic since template-haskell-2.16.0.0.pghc-lib-parserTurn a value into a Template Haskell expression, suitable for use in a splice.pghc-lib-parserTurn a value into a Template Haskell typed expression, suitable for use in a typed splice.pghc-lib-parserUnderlying monadic valuepghc-lib-parser(Represents an expression which has type a. Built on top of o6, typed expressions allow for type-safe splicing via:typed quotes, written as  [|| ... ||] where ...4 is an expression; if that expression has type a#, then the quotation has type p (p a)1typed splices inside of typed quotes, written as $$(...) where ...) is an arbitrary expression of type p (p a)Traditional expression quotes and splices let us construct ill-typed expressions:.fmap ppr $ runQ [| True == $( [| "foo" |] ) |]#GHC.Types.True GHC.Classes.== "foo"#GHC.Types.True GHC.Classes.== "foo" error: @ Couldn't match expected type @Bool@ with actual type @[Char]@6 @ In the second argument of @(==)@, namely @"foo"@& In the expression: True == "foo"1 In an equation for @it@: it = True == "foo"3With typed expressions, the type error occurs when  constructing" the Template Haskell expression:3fmap ppr $ runQ [|| True == $$( [|| "foo" ||] ) ||] error:. @ Couldn't match type @[Char]@ with @Bool@" Expected type: Q (TExp Bool)$ Actual type: Q (TExp [Char])5 @ In the Template Haskell quotation [|| "foo" ||]& In the expression: [|| "foo" ||]6 In the Template Haskell splice $$([|| "foo" ||])Levity-polymorphic since template-haskell-2.16.0.0.pghc-lib-parser.Underlying untyped Template Haskell expressionpghc-lib-parserThe p class implements the minimal interface which is necessary for desugaring quotations.The Monad m superclass is needed to stitch together the different AST fragments.p is used when desugaring binding structures such as lambdas to generate fresh names.Therefore the type of an untyped quotation in GHC is `Quote m => m Exp`For many years the type of a quotation was fixed to be `Q Exp` but by more precisely specifying the minimal interface it enables the o to be extracted purely from the quotation without interacting with p.pghc-lib-parser0Generate a fresh name, which cannot be captured.For example, this: .f = $(do nm1 <- newName "x" let nm2 = q "x" return (o [o nm1] (LamE [VarP nm2] (o nm1))) )will produce the splice f = \x0 -> \x -> x0In particular, the occurrence VarE nm1 refers to the binding VarP nm1', and is not captured by the binding VarP nm2.Although names generated by newName cannot  be captured , they can capture other names. For example, this: g = $(do nm1 <- newName "x" let nm2 = mkName "x" return (LamE [VarP nm2] (LamE [VarP nm1] (VarE nm2))) )will produce the splice g = \x -> \x0 -> x0since the occurrence VarE nm2+ is captured by the innermost binding of x , namely VarP nm1.pghc-lib-parserDiscard the type annotation and produce a plain Template Haskell expressionLevity-polymorphic since template-haskell-2.16.0.0.pghc-lib-parser4Annotate the Template Haskell expression with a typeThis is unsafe because GHC cannot check for you that the expression really does have the type you claim it has.Levity-polymorphic since template-haskell-2.16.0.0.pghc-lib-parserUnsafely convert an untyped code representation into a typed code representation.pghc-lib-parser4Lift a monadic action producing code into the typed p representationpghc-lib-parserExtract the untyped representation from the typed representationpghc-lib-parserModify the ambient monad used during code generation. For example, you can use p to handle a state effect:  handleState :: Code (StateT Int Q) a -> Code Q a handleState = hoistCode (flip runState 0) pghc-lib-parserVariant of (>>=) which allows effectful computations to be injected into code generation.pghc-lib-parserVariant of (>>) which allows effectful computations to be injected into code generation.pghc-lib-parser7A useful combinator for embedding monadic actions into p  myCode :: ... => Code m a myCode = joinCode $ do x <- someSideEffect return (makeCodeWith x) pghc-lib-parser>Report an error (True) or warning (False), but carry on; use  to stop.pghc-lib-parserReport an error to the user, but allow the current splice's computation to carry on. To abort the computation, use .pghc-lib-parser+Report a warning to the user, and carry on.pghc-lib-parserRecover from errors raised by p or .qghc-lib-parserLook up the given name in the (type namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details.qghc-lib-parserLook up the given name in the (value namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details.qghc-lib-parserq looks up information about the p. Bool, and reifyType ''Bool returns Type. This works even if there's no explicit signature and the type or kind is inferred.qghc-lib-parserreifyInstances nm tys( returns a list of visible instances of nm tys. That is, if nm is the name of a type class, then all instances of this class at the types tys! are returned. Alternatively, if nm is the name of a data family or type family, all instances of this family at the types tys are returned.Note that this is a "shallow" test; the declarations returned merely have instance heads which unify with nm tys(, they need not actually be satisfiable.reifyInstances ''Eq [ n 2 `n` n ''A `n` n ''B ] contains the "instance (Eq a, Eq b) => Eq (a, b) regardless of whether A and B themselves implement 'reifyInstances ''Show [ n (q "a") ]* produces every available instance of 'There is one edge case: reifyInstances ''Typeable tys9 currently always produces an empty list (no matter what tys are given).qghc-lib-parser reifyRoles nm returns the list of roles associated with the parameters of the tycon nm . Fails if nm cannot be found or is not a tycon. The returned list should never contain n.qghc-lib-parserreifyAnnotations target2 returns the list of annotations associated with target. Only the annotations that are appropriately typed is returned. So if you have Int and String annotations for the same target, you have to call this function twice.qghc-lib-parserreifyModule mod# looks up information about module mod. To look up the current module, call this function with the return value of .qghc-lib-parserreifyConStrictness nm looks up the strictness information for the fields of the constructor with the name nm-. Note that the strictness information that q returns may not correspond to what is written in the source code. For example, in the following data declaration: data Pair a = Pair a a q would return [n, DecidedLazy]0 under most circumstances, but it would return [n, DecidedStrict] if the  -XStrictData language extension was enabled.qghc-lib-parser%Is the list of instances returned by q nonempty?qghc-lib-parser2The location at which this computation is spliced.qghc-lib-parserThe q1 function lets you run an I/O computation in the p monad. Take care: you are guaranteed the ordering of calls to q within a single p? computation, but not about the order in which splices are run.Note: for various murky reasons, stdout and stderr handles are not necessarily flushed when the compiler finishes running, so you should flush them yourself.qghc-lib-parserRecord external files that runIO is using (dependent upon). The compiler can then recognize that it should re-compile the Haskell file when an external file changes.Expects an absolute file path.Notes:ghc -M does not know about these dependencies - it does not execute TH.The dependency is based on file content, not a modification timeqghc-lib-parserObtain a temporary file path with the given suffix. The compiler will delete this file after compilation.qghc-lib-parserAdd additional top-level declarations. The added declarations will be type checked along with the current declaration group.qghc-lib-parserqghc-lib-parserEmit a foreign file which will be compiled and linked to the object for the current module. Currently only languages that can be compiled with the C compiler are supported, and the flags passed as part of -optc will be also applied to the C compiler invocation that will compile them.0Note that for non-C languages (for example C++) extern C directives must be used to get symbols that we can access from Haskell.To get better errors, it is recommended to use #line pragmas when emitting C files, e.g. {-# LANGUAGE CPP #-} ... addForeignSource LangC $ unlines [ "#line " ++ show (682 + 1) ++ " " ++ show "libraries/template-haskell/Language/Haskell/TH/Syntax.hs" , ... ]qghc-lib-parserSame as q, but expects to receive a path pointing to the foreign file instead of a ; of its contents. Consider using this in conjunction with q.This is a good alternative to q9 when you are trying to directly link in an object file.qghc-lib-parserAdd a finalizer that will run in the Q monad after the current module has been type checked. This only makes sense when run within a top-level splice.The finalizer is given the local type environment at the splice point. Thus q is able to find the local definitions when executed inside the finalizer.qghc-lib-parser/Adds a core plugin to the compilation pipeline.addCorePlugin m' has almost the same effect as passing  -fplugin=m to ghc in the command line. The major difference is that the plugin module m must not belong to the current package. When TH executes, it is too late to tell the compiler that we needed to compile first a plugin module in the current package.qghc-lib-parserGet state from the p monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.qghc-lib-parserReplace the state in the p monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.qghc-lib-parserDetermine whether the given language extension is enabled in the p monad.qghc-lib-parser%List all enabled language extensions.qghc-lib-parserq is an internal utility function for constructing generic conversion functions from types with  instances to various quasi-quoting representations. See the source of q and q for two example usages: mkCon, mkLit and appQ are overloadable to account for different syntax for expressions and patterns; antiQ allows you to override type-specific cases, a common usage is just  const Nothing#, which results in no overloading.qghc-lib-parserq converts a value to a o representation of the same value, in the SYB style. It is generalized to take a function override type-specific cases; see q# for a more commonly used variant.qghc-lib-parserq is a variant of p in the p- type class which works for any type with a  instance.qghc-lib-parserq converts a value to a o representation of the same value, in the SYB style. It takes a function to handle type-specific cases, alternatively, pass  const Nothing to get default behavior.qghc-lib-parser#The name without its module prefix.ExamplesnameBase ''Data.Either.Either"Either"nameBase (mkName "foo")"foo"nameBase (mkName "Module.foo")"foo"qghc-lib-parser&Module prefix of a name, if it exists.ExamplesnameModule ''Data.Either.EitherJust "Data.Either"nameModule (mkName "foo")Nothing nameModule (mkName "Module.foo") Just "Module"qghc-lib-parserA name's package, if it exists.Examples namePackage ''Data.Either.Either Just "base"namePackage (mkName "foo")Nothing!namePackage (mkName "Module.foo")Nothingqghc-lib-parserReturns whether a name represents an occurrence of a top-level variable (p), data constructor (p%), type constructor, or type class (p#). If we can't be sure, it returns H.ExamplesnameSpace 'Prelude.id Just VarNamenameSpace (mkName "id")2Nothing -- only works for top-level variable namesnameSpace 'Data.Maybe.Just Just DataNamenameSpace ''Data.Maybe.MaybeJust TcClsNamenameSpace ''Data.Ord.OrdJust TcClsNameqghc-lib-parserGenerate a capturable name. Occurrences of such names will be resolved according to the Haskell scoping rules at the occurrence site. For example: =f = [| pi + $(varE (mkName "pi")) |] ... g = let pi = 3 in $fIn this case, g is desugared to g = Prelude.pi + 3 Note that mkName" may be used with qualified names: mkName "Prelude.pi" See also  for a useful combinator. The above example could be rewritten using  as f = [| pi + $(dyn "pi") |]qghc-lib-parserOnly used internallyqghc-lib-parserOnly used internallyqghc-lib-parser4Used for 'x etc, but not available to the programmerqghc-lib-parserTuple data constructorqghc-lib-parserTuple type constructorqghc-lib-parserUnboxed tuple data constructorqghc-lib-parserUnboxed tuple type constructorqghc-lib-parserUnboxed sum data constructorqghc-lib-parserUnboxed sum type constructorqghc-lib-parser(Highest allowed operator precedence for p constructor (answer: 9)qghc-lib-parserDefault fixity: infixl 9qghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parser Produces an Տ literal from the NUL-terminated C-string starting at the given memory address.qghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserqghc-lib-parserrghc-lib-parserIf the function passed to ; inspects its argument, the resulting action will throw a ֏.rghc-lib-parserrghc-lib-parsernghc-lib-parser  (Eq a, Ord b)pghc-lib-parserLine and character positionpghc-lib-parser Fresh namespghc-lib-parserReport an error (True) or warning (False) ...but carry on; use  to stoppghc-lib-parserthe error handlerghc-lib-parseraction which may failghc-lib-parserRecover from the monadic pghc-lib-parserhandler to invoke on failureghc-lib-parsercomputation to runnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooopoopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooopoopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqSafe> ܿ!tghc-lib-parserReturns J if the document is emptytghc-lib-parserAn empty documenttghc-lib-parserA ';' charactertghc-lib-parserA ',' charactertghc-lib-parserA : charactertghc-lib-parser A "::" stringtghc-lib-parserA space charactertghc-lib-parserA '=' charactertghc-lib-parser A "->" stringtghc-lib-parserA '(' charactertghc-lib-parserA ')' charactertghc-lib-parserA '[' charactertghc-lib-parserA ']' charactertghc-lib-parserA '{' charactertghc-lib-parserA '}' charactertghc-lib-parserWrap document in (...)tghc-lib-parserWrap document in [...]tghc-lib-parserWrap document in {...}tghc-lib-parserWrap document in '...'tghc-lib-parserWrap document in "..."tghc-lib-parserBesidetghc-lib-parserList version of ttghc-lib-parserBeside, separated by spacetghc-lib-parserList version of ttghc-lib-parser5Above; if there is no overlap it "dovetails" the twotghc-lib-parserAbove, without dovetailing.tghc-lib-parserList version of ttghc-lib-parserEither hcat or vcattghc-lib-parserEither hsep or vcattghc-lib-parser"Paragraph fill" version of cattghc-lib-parser"Paragraph fill" version of septghc-lib-parserNestedtghc-lib-parser "hang d1 n d2 = sep [d1, nest n d2]tghc-lib-parser punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]/ttttttttttttttttttttttttttttttttttttttttttttttt/tttttttttttttttttttttttttttttttttttttttttttttttt6t6t5t5Safe tghc-lib-parser.Pretty prints a pattern synonym type signaturetghc-lib-parserPretty prints a pattern synonym's type; follows the usual conventions to print a pattern synonym type compactly, yet unambiguously. See the note on o and the section on pattern synonyms in the GHC user's guide for more information.tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuutttttttttttttttttttttttttttttttttttttttttttttttttttttuuttttttuuttuuuuuuuuuuu Trustworthy.  ughc-lib-parserLevity-polymorphic since template-haskell-2.17.0.0$. type TExpQ :: TYPE r -> Kind.Typevghc-lib-parser Use with vvghc-lib-parser Use with vvghc-lib-parser*Dynamically binding a variable (unhygenic)vghc-lib-parserSingle-arg lambdavghc-lib-parser staticE x = [| static x |]vghc-lib-parserPattern synonym declarationvghc-lib-parserPattern synonym type signaturevghc-lib-parserImplicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.wghc-lib-parserpure the Module at the place of splicing. Can be used as an input for q.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwSafe Cwghc-lib-parserCreate a Bytes datatype representing raw bytes to be embedded into the program/library binary.wghc-lib-parserPointer to the dataghc-lib-parserOffset from the pointerghc-lib-parserNumber of bytesoooooooooooouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuwuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvwwvvvvvwvvvvvvvvvvvuvvvwwvuuuuuwvvvvvvvvvvvvvvvwvvvvvvvwwvvvwwwwwwwwwwwvvvvvvwvvwwwwwwwwwwwwwwwwwwvvwwwwoovvvvooooowvvooooovvvwvvwwwwwvwwwwwvvvwwwwwwwwvwwwwwwvvvvwvvvvvwwwwwwvwSafe nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwppppppppqpppppppqqqppppppppppppppppppqqqqqqqqqqnnnqppppppppppppppqqqqqqqqqqqooooooooooooooooooooooooonnnnnnnoonnnnnnnnnnnnnnnooooooooonnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooppppppqqnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppoooooooooooooooooooonnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnonnttttttttzNone&-/235>? /)+ghc-lib-parserLocated Haskell Expression+ghc-lib-parserSyntax ExpressionSyntaxExpr is represents the function used in interpreting rebindable syntax. In the parser, we have no information to supply; in the renamer, we have the name of the function (but see Note [Monad fail : Rebindable syntax, overloaded strings] for a wrinkle) and in the type-checker we have a more elaborate structure y.In some contexts, rebindable syntax is not implemented, and so we have constructors to represent that possibility in both the renamer and typechecker instantiations.E.g. (>>=)4 is filled in before the renamer by the appropriate  for (>>=), and then instantiated by the type checker with its type args etc+ghc-lib-parserGuarded Right-Hand Sides8GRHSs are used both for pattern bindings and for Matchesw : w , w,w , w,w w,w+ghc-lib-parserHaskell Splice+ghc-lib-parser;Haskell Command (e.g. a "statement" in an Arrow proc block)+ghc-lib-parserA Haskell expression.wghc-lib-parserHaskell Statement Context.wghc-lib-parser  ModuleName. do { ... }wghc-lib-parser  ModuleName.'mdo { ... } ie recursive do-expressionwghc-lib-parser'do-notation in an arrow-command contextwghc-lib-parser&A command-line Stmt in GHCi pat <- rhswghc-lib-parser!Pattern guard for specified thingwghc-lib-parserA branch of a parallel stmtwghc-lib-parserA branch of a transform stmtwghc-lib-parserHaskell Match ContextContext of a pattern match. This is more subtle than it would seem. See Note [Varieties of pattern matches].wghc-lib-parser8A pattern matching on an argument of a function bindingwghc-lib-parserPatterns of a lambdawghc-lib-parser)Patterns and guards on a case alternativewghc-lib-parser$Guards of a multi-way if alternativewghc-lib-parserPatterns of a procwghc-lib-parser"A pattern binding eg [y] <- e = ewghc-lib-parserGuards of pattern bindings, e.g., (Just b) | Just _ <- x = e | otherwise = e'wghc-lib-parserRecord update [used only in GHC.HsToCore.Expr to tell matchWrapper what sort of runtime error message to generate]wghc-lib-parser=Pattern of a do-stmt, list comprehension, pattern guard, etcwghc-lib-parser!A Template Haskell pattern splicewghc-lib-parser1A Template Haskell pattern quotation [p| (a,b) |]wghc-lib-parserA pattern synonym declarationwghc-lib-parserfunction binder of fwghc-lib-parser fixing of fwghc-lib-parserwas f' banged? See Note [FunBind vs PatBind]wghc-lib-parserArithmetic Sequence Informationwghc-lib-parserHaskell Bracketwghc-lib-parserPending Type-checker Splicexghc-lib-parserPending Renamer Splicexghc-lib-parserHaskell Spliced Thing-Values that can result from running a splice.xghc-lib-parserHaskell Spliced Expressionxghc-lib-parserHaskell Spliced Typexghc-lib-parserHaskell Spliced Patternxghc-lib-parser&Finalizers produced by a splice with See Note [Delaying modFinalizers in untyped splices] in GHC.Rename.Splice. For how this is used.xghc-lib-parserA splice can appear with various decorations wrapped around it. This data type captures explicitly how it was originally written, for use in the pretty printer.xghc-lib-parser$splice or $$splicexghc-lib-parser bare splicexghc-lib-parserApplicative Argumentxghc-lib-parser!The fail operator, after renamingThe fail operator is needed if this is a BindStmt where the pattern can fail. E.g.: (Just a) <- stmt The fail operator will be invoked if the pattern match fails. It is also used for guards in MonadComprehensions. The fail operator is Nothing if the pattern match can't failxghc-lib-parserTrue  = was a BodyStmt, False  =1 was a BindStmt. See Note [Applicative BodyStmt]xghc-lib-parserThe fail operatorThis is used for `.. <-` "bind statments" in do notation, including non-monadic "binds" in applicative.The fail operator is 'Just expr' if it potentially fail monadically. if the pattern match cannot fail, or shouldn't fail monadically (regular incomplete pattern exception), it is H.See Note [Monad fail : Rebindable syntax, overloaded strings] for the type of expression in the I case, and why it is so.See Note [Failing pattern matches in Stmts] for which contexts for 'BindStmt3's should use the monadic fail and which shouldn't.xghc-lib-parserParenthesised Statement Blockxghc-lib-parser6API Annotations when in qualifier lists or guards - w : w , w,w , w,w , w,wxghc-lib-parserx2 represents an applicative expression built with  and ". It is generated by the renamer, and is desugared into the appropriate applicative expression by the desugarer, but it is intended to be invisible in error messages..For full details, see Note [ApplicativeDo] in GHC.Rename.Exprxghc-lib-parserw : w w '{',w '}',xghc-lib-parserw : wxghc-lib-parserGhci Statementxghc-lib-parserGhci Located Statementxghc-lib-parserGuard Statementxghc-lib-parserGuard Located Statementxghc-lib-parserExpression Statementxghc-lib-parserExpression Located Statementxghc-lib-parserCommand Statementxghc-lib-parserCommand Located Statementxghc-lib-parserdo block Statementxghc-lib-parser3Located Statement with separate Left and Right id'sxghc-lib-parserLocated do block Statementxghc-lib-parserGuarded Right Hand Side.xghc-lib-parserLocated Guarded Right-Hand Sidexghc-lib-parser Guarded RHSsxghc-lib-parserThe where clausexghc-lib-parser Located Match May have w : w when in a listxghc-lib-parserHaskell Record Bindingsxghc-lib-parserHaskell Top-level Commandyghc-lib-parserTop-level command, introducing a new arrow. This may occur inside a proc (where the stack is empty) or as an argument of a command-forming operator.!Located Haskell Top-level Commandyghc-lib-parserHaskell Array Application Typeyghc-lib-parserw : w , w,w , wyghc-lib-parserw : w '(|' , w '|)'yghc-lib-parserw : w , w,yghc-lib-parserw : w '(', w ')'yghc-lib-parserw : w , w,w '{' , w '}'yghc-lib-parserw : w , w,w '{' , w '}'yghc-lib-parserw : w , w , w,w , w,yghc-lib-parserw : w , w '{' , w '}',wyghc-lib-parserw : w, w, w, w, wyghc-lib-parser*Located Haskell Command (for arrow syntax)yghc-lib-parserw : wHaskell Tuple Argumentyghc-lib-parser The argumentyghc-lib-parser-The argument is missing, but this is its typeyghc-lib-parser&Note [Trees that Grow] extension pointyghc-lib-parserLocated Haskell Tuple Argumenty is used for tuple sections (,a,) is represented by 3ExplicitTuple [Missing ty1, Present a, Missing ty3] Which in turn stands for (x:ty1 y:ty2. (x,a,y))yghc-lib-parserA pragma, written as {- ... )-}, that may appear within an expression.yghc-lib-parserw : w , w '{-# GENERATED' , w,w , w,w , w , w,w , w , w '#-}'yghc-lib-parserHsWrap appears only in typechecker output Invariant: The contained Expr is *NOT* itself an HsWrap. See Note [Detecting forced eta expansion] in GHC.HsToCore.Expr#. This invariant is maintained by +. hs_syn is something like HsExpr or HsCmdyghc-lib-parserExtra data fields for a y, added by the type checkeryghc-lib-parserExtra data fields for a y, added by the type checkeryghc-lib-parserVariableyghc-lib-parserUnbound variable; also used for "holes" (_ or _x). Turned from HsVar to HsUnboundVar by the renamer, when it finds an out-of-scope variable or hole. Turned into HsVar by type checker, to support deferred type errors.yghc-lib-parserAfter typechecker only; must be different HsVar for pretty printingyghc-lib-parserVariable pointing to record selector Not in use after typecheckingyghc-lib-parserOverloaded label (Note [Overloaded labels] in GHC.OverloadedLabels) Just id means RebindableSyntax0 is in use, and gives the id of the in-scope  fromLabel&. NB: Not in use after typecheckingyghc-lib-parser2Implicit parameter (not in use after typechecking)yghc-lib-parserOverloaded literalsyghc-lib-parser Simple (non-overloaded) literalsyghc-lib-parser3Lambda abstraction. Currently always a single matchw : w , w,yghc-lib-parser Lambda-casew : w , w,w , wyghc-lib-parser Applicationyghc-lib-parserVisible type applicationExplicit type argument; e.g f @Int x y NB: Has wildcards, but no implicit quantificationw : w,yghc-lib-parserOperator applications: NB Bracketed ops such as (+) come out as Vars.yghc-lib-parserNegation operator. Contains the negated expression and the name of w : wyghc-lib-parser.Parenthesised expr; see Note [Parens in HsSyn]yghc-lib-parser-Used for explicit tuples and sections thereofw : w , wyghc-lib-parserUsed for unboxed sum typesw : w '(#' , w, w '#)',There will be multiple w, (1 - alternative) before the expression, (arity - alternative) after ityghc-lib-parserw : w , w,w '{' , w '}'yghc-lib-parserw : w , w , w,w , w,yghc-lib-parser Multi-way ifw : w w,w,yghc-lib-parserlet(rec)w : w , w '{' , w '}',wyghc-lib-parserw : w, w, w, w, wyghc-lib-parserSyntactic list: [a,b,c,...]w : w '[', w ']'yghc-lib-parserRecord constructionw : w '{' , w,w '}'yghc-lib-parser Record updatew : w '{' , w,w '}'yghc-lib-parser,Expression with an explicit type signature.  e :: typew : wyghc-lib-parserArithmetic sequencew : w '[', w,w, w ']'yghc-lib-parserw : w , w,w , w,wyghc-lib-parserw : w , wyghc-lib-parserproc notation for Arrowsw : w , wyghc-lib-parserw : w,yghc-lib-parser'Command Syntax Table (for Arrow syntax)yghc-lib-parser7An expression with wrappers, used for rebindable syntaxThis should desugar to syn_res_wrap $ syn_expr (syn_arg_wraps[0] arg0) (syn_arg_wraps[1] arg1) ...:where the actual arguments come from elsewhere in the AST.yghc-lib-parserThe function to use in rebindable syntax. See Note [NoSyntaxExpr].yghc-lib-parserPost-Type checking TableWe use a PostTcTable where there are a bunch of pieces of evidence, more than is convenient to keep individually.yghc-lib-parserPost-Type checking ExpressionPostTcExpr is an evidence expression attached to the syntax tree by the type checker (c.f. postTcType).yghc-lib-parserThis is used for rebindable-syntax pieces that are too polymorphic for tcSyntaxOp (trS_fmap and the mzip in ParStmt)yghc-lib-parserMake a 'SyntaxExpr GhcRn' from an expression Used only in getMonadFailOp. See Note [Monad fail : Rebindable syntax, overloaded strings] in GHC.Rename.Expryghc-lib-parserMake a + from a 4 (the "rn" is because this is used in the renamer).yghc-lib-parserBuild a "wrapped" y out of an extension constructor, and the two components of the expansion: original and desugared expressions.See Note [Rebindable Syntax and HsExpansion] above for more details.yghc-lib-parsery p e returns J if the expression e% needs parentheses under precedence p.yghc-lib-parsery p e checks if y p e is true, and if so, surrounds e with an y. Otherwise, it simply returns e.zghc-lib-parser.Is there only one RHS in this list of matches?zghc-lib-parserIs this a monadic context?zghc-lib-parser(Just print the original expression (the a).+ghc-lib-parser May have w : w when in a listxghc-lib-parserPost renaming has optional fail and bind / (>>=) operator. Post typechecking, also has multiplicity of the argument and the result type of the function passed to bind; that is, (P, S) in (>>=) :: Q -> (R # P -> S) -> T See Note [The type of bind in Stmts]yghc-lib-parserXExpr, XCmd, ...ghc-lib-parsersource expression (+)ghc-lib-parser"desugared" expression (+)ghc-lib-parsersuitably wrapped y+++xxxxx+xxxxx+xxxxx+yyyyyyyyyyy+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++++++wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+yy+yyyyyyyyyyyyyyy+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++yyyyyyyyyyyyyyyy+yyyyyyyyyyyyyyyxyyxxyyyyyzx+xxxxxxxxxxxxxxxxxzzzzz+xxxxxxxxxz++zzzzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzzzzz+xxxxxxxxxxzxxxxxxxxxxxwxxxxwwz+z+zzwwwwwwwwwzzzzwwwwwzwwwwwwwwwwwwwwwwzwwwwwwwwwwzzzzzzzzzzzzz#Generic helpers for the HsSyn type.((c) The University of Glasgow, 1992-2006None&/>? Dzghc-lib-parserThis class specifies how to collect variable identifiers from extension patterns in the given pass. Consumers of the GHC API that define their own passes should feel free to implement instances in order to make use of functions which depend on it.In particular, Haddock already makes use of this, with an instance for its DocNameI pass so that it can reuse the code in GHC for collecting binders.zghc-lib-parser e => (e)zghc-lib-parserA simple case alternative with a single pattern, no binds, no guards; pre-typecheckingzghc-lib-parserWrap in parens if y appPrec says it needs them So f x becomes (f x), but 3 stays as 3.zghc-lib-parserA useful function for building OpApps. The operator is always a variable, and we don't know the fixity yet.{ghc-lib-parser NB: Only for + #.{ghc-lib-parser Wildcard pattern - after parsing{ghc-lib-parser!Wildcard pattern - after renaming{ghc-lib-parser4The Big equivalents for the source tuple expressions{ghc-lib-parser1The Big equivalents for the source tuple patterns{ghc-lib-parserLifts a "small" constructor into a "big" constructor by recursive decomposition{ghc-lib-parserSplit a list into lists that are small enough to have a corresponding tuple arity. The sub-lists of the result all have length <= 6 But there may be more than 6 sub-lists{ghc-lib-parserConvert [ to [. The former is what is parsed, but the latter is what we need in class/instance declarations{ghc-lib-parserAvoid y co1 (y co2 _) and y co1 (y _ _)/ See Note [Detecting forced eta expansion] in GHC.HsToCore.Expr{ghc-lib-parser8Not infix, with place holders for coercion and free vars{ghc-lib-parser!In Name-land, with empty bind_fvs{ghc-lib-parserIf any of the matches in the [ are infix, the [ is considered infix.{ghc-lib-parserConvenience function using {. This is for generated bindings only, do not use for user-written code.{ghc-lib-parser#Make a prefix, non-strict function w{ghc-lib-parserShould we treat this as an unlifted bind? This will be true for any bind that binds an unlifted variable, but we must be careful around AbsBinds. See Note [Unlifted id check in isUnliftedHsBind]. For usage information, see Note [Strict binds check] is GHC.HsToCore.Binds.{ghc-lib-parser5Is a binding a strict variable or pattern bind (e.g. !x = ...)?{ghc-lib-parserCollect # binders only, or #"s + pattern synonyms, respectively{ghc-lib-parser Collect both #s and pattern-synonym binders{ghc-lib-parserSame as {#, but works over a list of bindings{ghc-lib-parserUsed exclusively for the bindings of an instance decl which are all FunBinds{ghc-lib-parserReturns all the binding names of the decl. The first one is guaranteed to be the name of the decl. The first component represents all binding names except record fields; the second represents field occurrences. For record fields mentioned in multiple constructors, the SrcLoc will be from the first occurrence.3Each returned (Located name) has a SrcSpan for the whole- declaration. See Note [SrcSpan for binders]{ghc-lib-parserSee Note [SrcSpan for binders]{ghc-lib-parserCollects record pattern-synonym selectors only; the pattern synonym names are collected by {.{ghc-lib-parserthe < returned are for the whole declarations, not just the names{ghc-lib-parser5"Small" constructor function, of maximum input arity 6ghc-lib-parser/Possible "big" list of things to construct fromghc-lib-parser:Constructed thing made possible by recursive decompositionWWzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzz{{zz{{{{{{zzzz{{z{{zzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzz{{{{{{{{{{{{zz{{{{WW{{{{{{{{{{zzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{zz{{{{{{{{{{None 23>? GNone-23>? L; }ghc-lib-parserHaskell ModuleAll we actually declare here is the top-level structure for a module.}ghc-lib-parserwsw,ww,w, w for explicit braces and semi around hsmodImports,hsmodDecls if this style is used.}ghc-lib-parserLayout info for the module. For incomplete modules (e.g. the output of parseHeader), it is NoLayoutInfo.}ghc-lib-parserNothing: "module X where" is omitted (in which case the next field is Nothing too)}ghc-lib-parser Export listNothing+: export list omitted, so export everythingJust [] : export nothing Just [...]: as you would expect...ws : w% ,w}ghc-lib-parserWe snaffle interesting stuff out of the imported interfaces early on, adding that info to TyDecls/etc; so this list is often empty, downstream.}ghc-lib-parser1Type, class, value, and interface signature decls}ghc-lib-parser9reason/explanation for warning/deprecation of this modulews : w% ,w}ghc-lib-parser-Haddock module info and description, unparsedws : w% ,w """"""""########))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++]]]]]]\]]]]\]]\\\]]]+++xxxxx+xxxxx+xxxxx+yyyyyyyyyyy+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+++++++++++++++++++++++++++++++++++++++,+,,,,,,,,,,,,,???????????????@@????????????@@@@@@@JJJJJJJJJKJKKKVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_^_^__________________________________________________________________________________________________________________wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}} }}}}}}}}}None [~ghc-lib-parser The thing that has type "actual"~ghc-lib-parserIs at least one of the three elements above visible? (Errors from the polymorphic subsumption check are considered visible.) Only used for prioritizing error messages.~ghc-lib-parserUserTypeCtxt describes the origin of the polymorphic type in the places where we need an expression to have that type~ghc-lib-parser)Extract a suitable CtOrigin from a HsExpr~ghc-lib-parser-Extract a suitable CtOrigin from a MatchGroup~ghc-lib-parser-Extract a suitable CtOrigin from guarded RHSs}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~None l ~ghc-lib-parserSee Note [SubGoalDepth]~ghc-lib-parserWhether or not one  can rewrite another is determined by its flavour and its equality relation. See also Note [Flavours with roles] in GHC.Tc.Solver.Monad~ghc-lib-parserA place for type-checking evidence to go after it is generated. Wanted equalities are always HoleDest; other wanteds are always EvVarDest.~ghc-lib-parserbind this var to the evidence EvVarDest is always used for non-type-equalities e.g. class constraints~ghc-lib-parserfill in this hole with the evidence HoleDest is always used for type-equalities See Note [Coercion holes] in GHC.Core.TyCo.Repghc-lib-parserUsed to indicate extra information about why a CIrredCan is irreducibleghc-lib-parser,Used to indicate which sort of hole we have.ghc-lib-parserEither an out-of-scope variable or a "true" hole in an expression (TypedHoles). The # is where to store "evidence": this evidence will be an erroring expression for -fdefer-type-errors.ghc-lib-parser(A hole in a type (PartialTypeSignatures)ghc-lib-parserA hole stores the information needed to report diagnostics about holes in terms (unbound identifiers or underscores) or in types (also called wildcards, as used in partial type signatures). See Note [Holes].ghc-lib-parserWhat flavour of hole is this?ghc-lib-parserThe name of this holeghc-lib-parserType to be printed to the user For expression holes: type of expr For type holes: the missing typeghc-lib-parserWhere hole was writtenghc-lib-parserMakes a new equality predicate with the same role as the given evidence.ghc-lib-parserGet the flavour of the given ghc-lib-parser(Get the equality relation for the given ghc-lib-parserReturns free variables of constraints as a non-deterministic setghc-lib-parserReturns free variables of constraints as a deterministically ordered. list. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of a bag of constraints as a non-deterministic set. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of a bag of constraints as a deterministically ordered list. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of WantedConstraints as a non-deterministic set. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserReturns free variables of WantedConstraints as a deterministically ordered list. See Note [Deterministic FV] in  GHC.Utils.FV.ghc-lib-parserA constraint is considered to be a custom type error, if it contains custom type errors anywhere in it. See Note [Custom type errors in constraints]ghc-lib-parserTrue if taking superclasses of givens, or of wanteds (to perhaps expose more equalities or functional dependencies) might help to solve this constraint. See Note [When superclasses help]ghc-lib-parserChecks whether a the given wanted constraints are solved, i.e. that there are no simple constraints left and all the implications are solved.ghc-lib-parserDoes this hole represent an "out of scope" error? See Note [Insoluble holes]ghc-lib-parser)Get the equality relation relevant for a ~ghc-lib-parserGet the role relevant for a ~ghc-lib-parser-Extract the flavour, role, and boxity from a ~ghc-lib-parser$Extract the flavour and role from a ghc-lib-parser+Take a CtLoc and moves it to the kind level~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~None%&15<=> ptghc-lib-parserAdd Haddock documentation accumulated in the parser state to a parsed HsModule.Reports badly positioned comments when -Winvalid-haddock is enabled.None&'(>? 5ghc-lib-parser?See Note [Ambiguous syntactic categories] and Note [PatBuilder]ghc-lib-parserDisambiguate constructs that may appear when we do not know ahead of time whether we are parsing an expression, a command, or a pattern. See Note [Ambiguous syntactic categories]ghc-lib-parserSee Note [Body in DisambECP]ghc-lib-parserInfix operator representationghc-lib-parser Function argument representationghc-lib-parserReturn a command without ambiguity, or fail in a non-command context.ghc-lib-parserReturn an expression without ambiguity, or fail in a non-expression context.ghc-lib-parser"Disambiguate "... -> ..." (lambda)ghc-lib-parserDisambiguate "let ... in ..."ghc-lib-parserBring superclass constraints on InfixOp into scope. See Note [UndecidableSuperClasses for associated types]ghc-lib-parser%Disambiguate "f # x" (infix operator)ghc-lib-parserDisambiguate "case ... of ..."ghc-lib-parser Disambiguate  \case ... (lambda case)ghc-lib-parserBring superclass constraints on FunArg into scope. See Note [UndecidableSuperClasses for associated types]ghc-lib-parser)Disambiguate "f x" (function application)ghc-lib-parser.Disambiguate "f @t" (visible type application)ghc-lib-parser'Disambiguate "if ... then ... else ..."ghc-lib-parser'Disambiguate "do { ... }" (do notation)ghc-lib-parser$Disambiguate "( ... )" (parentheses)ghc-lib-parser2Disambiguate a variable "f" or a data constructor MkF.ghc-lib-parser"Disambiguate a monomorphic literalghc-lib-parser"Disambiguate an overloaded literalghc-lib-parserDisambiguate a wildcardghc-lib-parser'Disambiguate "a :: t" (type annotation)ghc-lib-parser$Disambiguate "[a,b,c]" (list syntax)ghc-lib-parser5Disambiguate "$(...)" and "[quasi|...|]" (TH splices)ghc-lib-parserDisambiguate "f { a = b, ... }" syntax (record construction and record updates)ghc-lib-parserDisambiguate "-a" (negation)ghc-lib-parser-Disambiguate "(# a)" (right operator section)ghc-lib-parser&Disambiguate "(a -> b)" (view pattern)ghc-lib-parserDisambiguate "a@b" (as-pattern)ghc-lib-parser Disambiguate "~a" (lazy pattern)ghc-lib-parser Disambiguate "!a" (bang pattern)ghc-lib-parser,Disambiguate tuple sections and unboxed sumsghc-lib-parser+Validate infixexp LHS to reject unwanted {- SCC ...  -} pragmasghc-lib-parserDisambiguate infix operators. See Note [Ambiguous syntactic categories]ghc-lib-parser!Either an operator or an operand.ghc-lib-parserEssentially a wrapper for a RuleBndr GhcPsghc-lib-parsermkClassDecl builds a RdrClassDecl, filling in the names for tycon and datacon by deriving them from the name of the class. We fill in the names for the tycon and datacon corresponding to the class, by deriving them from the name of the class itself. This saves recording the names in the interface file (which would be equally good).ghc-lib-parserConverts a list of Ws annotated with their # to binders without annotations. Only accepts specified variables, and errors if any of the provided binders has an # annotation.ghc-lib-parser Converts W annotated with its # to one without annotations. Only accepts specified variables, and errors if the provided binder has an # annotation.ghc-lib-parserFunction definitions are restructured here. Each is assumed to be recursive initially, and non recursive definitions are discovered by the dependency analyser.ghc-lib-parserConstruct a GADT-style data constructor from the constructor names and their type. Some interesting aspects of this function:This splits up the constructor type into its quantified type variables (if provided), context (if provided), argument types, and result type, and records whether this is a prefix or record GADT constructor. See Note [GADT abstract syntax] in  GHC.Hs.Decls for more details.ghc-lib-parserThis rather gruesome function is used mainly by the parser. When parsing: data T a = T | T1 Int"we parse the data constructors as types? because of parser ambiguities, so then we need to change the  type constr to a  data constrThe exact-name case can occur when parsing: data [] a = [] | a : [a]3For the exact-name case we return an original name.ghc-lib-parser>Replaces constraint tuple names with corresponding boxed ones.ghc-lib-parserCheck if the gadt_constrlist is empty. Only raise parse error for `data T where` to avoid affecting existing error message, see #8258.ghc-lib-parserYield a parse error if we have a function applied directly to a do block etc. and BlockArguments is not enabled.ghc-lib-parserValidate the context constraints and break up a context into a list of predicates.  (Eq a, Ord b) --> [Eq a, Ord b] Eq a --> [Eq a] (Eq a) --> [Eq a] (((Eq a))) --> [Eq a] ghc-lib-parserMerge a reversed and  non-empty/ soup of operators and operands into a type. User input: F x y + G a b * X Input to : [X, *, b, a, G, +, y, x, F] Output corresponds to what the user wrote assuming all operators are of the same fixity and right-associative.It's a bit silly that we're doing it at all, as the renamer will have to rearrange this, and it'd be easier to keep things separate.,See Note [Parsing data constructors is hard]ghc-lib-parserMerge a reversed and  non-empty; soup of operators and operands into a data constructor. User input: C !A B -- ^ doc Input to :: ["doc", B, !A, C] Output: (C, PrefixCon [!A, B], "doc"),See Note [Parsing data constructors is hard]ghc-lib-parserCheck for monad comprehensions1If the flag MonadComprehensions is set, return a w# context, otherwise use the usual w contextghc-lib-parserCheck if a fixity is valid. We support bypassing the usual bound checks for some special operators.сghc-lib-parser#Hint about bang patterns, assuming  BangPatterns is off.ghc-lib-parser precedenceghc-lib-parser operatorsHzzzzz{ԀՀր׀؀ـڀۀ܀݀ހ߀ÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁzzzzz{ÁāŁƁHсҁ܀݀ހ߀؀ـڀۀǁȁʁɁԁӁ΁ˁρ́́ԀՀր׀ЁNone "ghc-lib-parserShow a GHC syntax tree. This parameterised because it is also used for comparing ASTs in ppr roundtripping tests, where the SrcSpan's are blanked out, to avoid comparing locations, only structureNone ghc-lib-parserRename a module from one name to another. The identity renaming means that the module should be brought into scope.ghc-lib-parserAn include of another unitghc-lib-parser Is this a dependency signature include? If so, we don't compile this include when we instantiate this unit (as there should not be any modules brought into scope.)ghc-lib-parserA declaration in a package, e.g. a module or signature definition, or an include.ghc-lib-parser Top level unit declaration in a Backpack file.  None '(.> None #$'(28 &Ăghc-lib-parserThe server-side Template Haskell state. This is created by the StartTH message. A new one is created per module that GHC typechecks.Ƃghc-lib-parser+persistent data between splices in a moduleǂghc-lib-parser#location for current splice, if anyȂghc-lib-parserpipe to communicate with GHC݂ghc-lib-parserWe can pass simple expressions to EvalStmt, consisting of values and application. This allows us to wrap the statement to be executed in another function, which is used by GHCi to implement :set args and :set prog. It might be worthwhile to extend this little language in the future.ghc-lib-parserMessages sent back to GHC from GHCi.TH, to implement the methods of Quasi. For an overview of how TH works with Remote GHCi, see Note [Remote Template Haskell] in GHCi.TH.ghc-lib-parserIndicates that this RunTH is finished, and the next message will be the result of RunTH (a QResult).ghc-lib-parserTemplate Haskell return valuesghc-lib-parser1RunTH finished successfully; return value followsghc-lib-parserRunTH threw an exceptionghc-lib-parser RunTH called ghc-lib-parserA  Message a+ is a message that returns a value of type a2. These are requests sent from GHC to the server.ghc-lib-parserExit the iserv processghc-lib-parserCreate a set of BCO objects, and return HValueRefs to them Note: Each ByteString contains a Binary-encoded [ResolvedBCO], not a ResolvedBCO. The list is to allow us to serialise the ResolvedBCOs in parallel. See  createBCOs in compilerGHCRuntime/Interpreter.hs.ghc-lib-parserRelease msghc-lib-parser'Add entries to the Static Pointer Tableghc-lib-parserMalloc some data and return a m to itghc-lib-parserCalls ghc-lib-parser Free data previously created by ghc-lib-parser&Create an info table for a constructorghc-lib-parserEvaluate a statementghc-lib-parser3Resume evaluation of a statement after a breakpointghc-lib-parser4Abandon evaluation of a statement after a breakpointghc-lib-parserEvaluate something of type  IO Stringghc-lib-parserEvaluate something of type String -> IO Stringghc-lib-parserEvaluate something of type IO ()ghc-lib-parser5Create a set of CostCentres with the same module nameghc-lib-parserShow a ׏ as a [String]ghc-lib-parser&Create a new array of breakpoint flagsghc-lib-parserEnable a breakpointghc-lib-parser'Query the status of a breakpoint (True  = enabled)ghc-lib-parser2Get a reference to a free variable at a breakpointghc-lib-parser:Start a new TH module, return a state token that should beghc-lib-parserEvaluate a TH computation.Returns a ByteString, because we have to force the result before returning it to ensure there are no errors lurking in it. The TH types don't have NFData instances, and even if they did, we have to serialize the value anyway, so we might as well serialize it to force it.ghc-lib-parserRun the given mod finalizers.ghc-lib-parserRemote interface to GHC.Exts.Heap.getClosureData. This is used by the GHCi debugger to inspect values in the heap for :print and type reconstruction.ghc-lib-parser;Evaluate something. This is used to support :force in GHCi.ghc-lib-parser6Resume forcing a free variable in a breakpoint (#2950)‚ÂĂłƂǂȂɂʂ˂̂͂΂ςЂт҂ӂԂՂւׂ؂قڂۂ܂݂ނ߂‚Âقڂۂ܂ւׂ؂݂ނ߂҂ӂԂՂςЂтɂʂ˂̂͂΂ĂłƂǂȂNone ރghc-lib-parserExternal interpreter instanceghc-lib-parserValues that need to be freed before the next command is sent. Threads can append values to this list asynchronously (by modifying the IServ state MVar).ghc-lib-parser5Configuration needed to spawn an external interpreterghc-lib-parserExternal program to runghc-lib-parserCommand-line optionsghc-lib-parserUse Profiling wayghc-lib-parserUse Dynamic wayghc-lib-parserHookghc-lib-parser!Trace action executed after spawnghc-lib-parser State of an external interpreterghc-lib-parserNot spawned yetghc-lib-parserRunningghc-lib-parserExternal interpreterThe external interpreter is spawned lazily (on first use) to avoid slowing down sessions that don't require it. The contents of the MVar reflects the state of the interpreter (running or not).ghc-lib-parserRuntime interpreterghc-lib-parserExternal interpreterރ߃ރ߃None ghc-lib-parser stepping modeghc-lib-parserfilename (for errors)ghc-lib-parserline number (for errors)(( Safe-Inferred28 None#$ ghc-lib-parser6All the information about the breakpoints for a moduleghc-lib-parserThe array of flags, one per breakpoint, indicating which breakpoints are enabled.ghc-lib-parser3An array giving the source span of each breakpoint.ghc-lib-parserAn array giving the names of the free variables at each breakpoint.ghc-lib-parserAn array giving the names of the declarations enclosing each breakpoint. See Note [Field modBreaks_decls]ghc-lib-parser1Array pointing to cost centre for each breakpointghc-lib-parser6info about each breakpoint from the bytecode generatorghc-lib-parserC CostCentre typeghc-lib-parserBreakpoint indexghc-lib-parserInformation about a breakpoint that we know at code-generation timeքghc-lib-parserConstruct an empty ModBreaks.„ÄĄńƄDŽȄɄʄ˄̄̈́΄τЄф҄ӄԄՄք.΄τЄф҄ӄԄՄ̄̈́„ÄĄńƄDŽȄ˄ɄʄքNone ghc-lib-parserAn entry to be inserted into a module's static pointer table. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable.ghc-lib-parser3Objects which have yet to be linked by the compilerghc-lib-parserAn object file (.o)ghc-lib-parserStatic archive file (.a)ghc-lib-parser3Dynamically linked library file (.so, .dll, .dylib)ghc-lib-parserA byte-code object, lives only in memory. Also carries some static pointer table entries which should be loaded along with the BCOs. See Note [Grant plan for static forms] in GHC.Iface.Tidy.StaticPtrTable.ghc-lib-parserInformation we can use to dynamically link modules into the compilerghc-lib-parserTime at which this linkable was built (i.e. when the bytecodes were produced, or the mod date on the files)ghc-lib-parserThe linkable module itselfghc-lib-parser3Those files and chunks of code we have yet to link.4INVARIANT: A valid linkable always has at least one  item. If this list is empty, the Linkable represents a fake linkable, which is generated in HscNothing mode to avoid recompiling modules.?ToDo: Do items get removed from this list when they get linked?None#$&/5>? DMghc-lib-parserA map keyed by the  which has type Name.ghc-lib-parserA list of conlikes which represents a complete pattern match. These arise from COMPLETE signatures.ghc-lib-parser>The ConLikes that form a covering family (e.g. Nothing, Just)ghc-lib-parser&The TyCon that they cover (e.g. Maybe)ghc-lib-parserextra source files (e.g. from #includes). The lexer collects these from '#  file  line' pragmas, which the C preprocessor leaves behind. These files and their timestamps are stored in the .hi file, so that we can force recompilation if any of them change (#3589)ghc-lib-parserSafe Haskell information for  Simply a wrapper around SafeHaskellMode to sepperate iface and flagsghc-lib-parserIs an import a safe import?ghc-lib-parserThis is used to signal if one of my imports used HPC instrumentation even if there is no module-local HPC usageghc-lib-parser;Information about a modules use of Haskell Program Coverageghc-lib-parser*Is hpc used anywhere on the module *tree*?ghc-lib-parserIndicates whether a given module's source has been modified since it was last compiled.ghc-lib-parserthe source has been modifiedghc-lib-parserthe source has not been modified. Compilation may or may not be necessary, depending on whether any dependencies have changed since we last compiled.ghc-lib-parserthe source has not been modified, and furthermore all of its (transitive) dependencies are up to date; it definitely does not need to be recompiled. This is important for two reasons: (a) we can omit the version check in checkOldIface, and (b) if the module used TH splices we don't need to force recompilation.ghc-lib-parserA single node in a ,. The nodes of the module graph are one of:A regular Haskell source moduleA hi-boot source moduleghc-lib-parserIdentity of the moduleghc-lib-parser1The module source either plain Haskell or hs-bootghc-lib-parser5Location of the various files belonging to the moduleghc-lib-parserTimestamp of source fileghc-lib-parser#Timestamp of object, if we have oneghc-lib-parserDependent packages, used to generate #includes for C code genghc-lib-parser%Program coverage tick box informationghc-lib-parserModule breakpointsghc-lib-parserStatic pointer table entries for static forms defined in the module. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTableghc-lib-parserA ModGuts is carried through the compiler, accumulating stuff as it goes There is only one ModGuts at any time, the one for the module being compiled right now. Once it is compiled, a  and , are extracted and the ModGuts is discarded.ghc-lib-parserModule being compiledghc-lib-parserWhether it's an hs-boot moduleghc-lib-parser$For error messages from inner passesghc-lib-parserWhat it exportsghc-lib-parser*What it depends on, directly or otherwiseghc-lib-parser$What was used? Used for interfaces.ghc-lib-parserDid we run a TH splice?ghc-lib-parserTop-level lexical environmentghc-lib-parserFixities declared in this module. Used for creating interface files.ghc-lib-parser=TyCons declared in this module (includes TyCons for classes)ghc-lib-parser'Class instances declared in this moduleghc-lib-parser(Family instances declared in this moduleghc-lib-parser(Pattern synonyms declared in this moduleghc-lib-parserBefore the core pipeline starts, contains See Note [Overall plumbing for rules] in GHC.Core.Rulesghc-lib-parserBindings for this moduleghc-lib-parser'Foreign exports declared in this moduleghc-lib-parser(Files to be compiled with the C compilerghc-lib-parserWarnings declared in the moduleghc-lib-parser#Annotations declared in this moduleghc-lib-parserComplete Matchesghc-lib-parser!Coverage tick boxes in the moduleghc-lib-parserBreakpoints for the moduleghc-lib-parser Class instance environment for  home-package% modules (including this one); c.f.  tcg_inst_envghc-lib-parser&Type-family instance environment for  home-package% modules (including this one); c.f. tcg_fam_inst_envghc-lib-parserSafe Haskell modeghc-lib-parserDo we need to trust our own package for Safe Haskell? See Note [Trust Own Package] in GHC.Rename.Namesghc-lib-parserModule header.ghc-lib-parserDocs on declarations.ghc-lib-parserDocs on arguments.ghc-lib-parser$The name the module is imported withghc-lib-parser#the source span of the whole importghc-lib-parserwhether this is a safe importghc-lib-parser"whether this is an "hiding" importghc-lib-parserall the things the module could provide NB. BangPattern here: otherwise this leaks. (#15111)ghc-lib-parser"whether this is a qualified importghc-lib-parserIf a module was "imported" by the user, we associate it with more detailed usage information ; a module imported by the system only gets used for usage information.ghc-lib-parserRecords the modules directly imported by a module for extracting e.g. usage information, and also to give better error messageghc-lib-parserThe / is essentially a cache for information in the  for home modules only. Information relating to packages will be loaded into global environments in .ghc-lib-parserLocal type environment for this particular module Includes Ids, TyCons, PatSynsghc-lib-parser#"s for the instances in this moduleghc-lib-parserDomain may include #s from other modulesghc-lib-parserAnnotations present in this module: currently they only annotate things also declared in this moduleghc-lib-parser&Complete match pragmas for this moduleghc-lib-parserThe original names declared of a certain module that are exportedghc-lib-parserA  plus a > summarises everything we know about a compiled module. The  is the stuff *before* linking, and can be written out to an interface file. The 'ModDetails is after linking and can be completely recovered from just the .4When we read an interface file, we also construct a . from it, except that we explicitly make the Æ and a few other fields empty; as when reading we consolidate the declarations etc. into a number of indexed maps and environments in the .ghc-lib-parserName of the module we are forghc-lib-parserAre we a sig of another mod?ghc-lib-parserBoot? Signature?ghc-lib-parserThe dependencies of the module. This is consulted for directly-imported modules, but not for anything else (hence lazy)ghc-lib-parserUsages; kept sorted so that it's easy to decide whether to write a new iface file (changing usages doesn't affect the hash of this module) NOT STRICT! we read this field lazily from the interface file It is *only* consulted by the recompilation checkerghc-lib-parserExports Kept sorted by (mod,occ), to make version comparisons easier Records the modules that are the declaration points for things exported by this module, and the s of those thingsghc-lib-parserModule required TH splices when it was compiled. This disables recompilation avoidance (see #481).ghc-lib-parserFixities NOT STRICT! we read this field lazily from the interface fileghc-lib-parserWarnings NOT STRICT! we read this field lazily from the interface file†ghc-lib-parserAnnotations NOT STRICT! we read this field lazily from the interface fileÆghc-lib-parserType, class and variable declarations The hash of an Id changes if its fixity or deprecations change (as well as its type of course) Ditto data constructors, class operations, except that the hash of the parent class/tycon changesĆghc-lib-parser6Binds all the things defined at the top level in the original source code for this module. which is NOT the same as mi_exports, nor mi_decls (which may contains declarations for things not actually defined by the user). Used for GHCi and for inspecting the contents of modules via the GHC API only.(We need the source file to figure out the top-level environment, if we didn't compile this module from source then this field contains Nothing).1Strictly speaking this field should live in the ", but that leads to more plumbing.ņghc-lib-parserSorted class instanceƆghc-lib-parserSorted family instancesdžghc-lib-parser Sorted rulesȆghc-lib-parser:True if this program uses Hpc at any point in the program.Ɇghc-lib-parser/Safe Haskell Trust information for this module.ʆghc-lib-parserDo we require the package this module resides in be trusted to trust this module? This is used for the situation where a module is Safe (so doesn't require the package be trusted itself) but imports some trustworthy modules from its own package (which does require its own package be trusted). See Note [Trust Own Package] in GHC.Rename.Names̆ghc-lib-parserModule header.͆ghc-lib-parserDocs on declarations.Άghc-lib-parserDocs on arguments.φghc-lib-parserEither () or ц% for a fully instantiated interface.Іghc-lib-parserAdditional optional fields, where the Map key represents the field name, resulting in a (size, serialized data) pair. Because the data is intended to be serialized through the internal 3 class (increasing compatibility with types using  and  ,, such as HIE), this format is chosen over  ByteStrings.цghc-lib-parserExtends a PartialModIface with information which is either: * Computed after codegen * Or computed just before writing the iface to disk. (Hashes) In order to fully instantiate it.ӆghc-lib-parserHash of the whole interfaceԆghc-lib-parserHash of the ABI onlyՆghc-lib-parserHash of the important flags used when compiling the module, excluding optimisation flagsֆghc-lib-parserHash of optimisation flags׆ghc-lib-parserHash of hpc flags؆ghc-lib-parserHash of pluginsنghc-lib-parserWhether this module has orphansچghc-lib-parserWhether this module has family instances. See Note [The type family instance consistency story].ۆghc-lib-parserHash of export list܆ghc-lib-parser:Hash for orphan rules, class and family instances combined݆ghc-lib-parserCached lookup for ކghc-lib-parserCached lookup for ߆ghc-lib-parserCached lookup for Æ. The Nothing in ߆ means that the thing isn't in decls. It's useful to know that when seeing if we are up to date wrt. the old interface. The + is the parent of the name, if it has one.ghc-lib-parser/The result of searching for an imported module.NB: FindResult manages both user source-import lookups (which can result in  ) as well as direct imports for interfaces (which always result in ).ghc-lib-parserThe module was foundghc-lib-parser The requested unit was not foundghc-lib-parser"_Error_: both in multiple packagesghc-lib-parser Not foundghc-lib-parserPlaces where I lookedghc-lib-parserJust p => module is in this unit's manifest, but couldn't find the .hi fileghc-lib-parser7Module is in these units, but the *module* is hiddenghc-lib-parser5Module is in these units, but the *unit* is hiddenghc-lib-parser,Module is in these units, but it is unusableghc-lib-parserPossible mis-spelled modulesghc-lib-parserThe  maps modules to the result of searching for that module. It records the results of searching for modules along the search path. On :load., we flush the entire contents of this cache.ghc-lib-parser QTghc-lib-parserParse a Haskell module with Haddock comments. This is done in two steps:܈ to build the AST# to insert Haddock comments into itThis is the only parser entry point that deals with Haddock comments. The other entry points (, (, etc) do not insert them into the AST.܈݈ވ߈݈ވ߈܈؏9 ُ9 None & Vdghc-lib-parser#Parse the imports of a source file. Throws a  if parsing fails.ghc-lib-parser6Parse OPTIONS and LANGUAGE pragmas of the source file. Throws a 5 if flag parsing fails (including unsupported flags.)ghc-lib-parser6Parse OPTIONS and LANGUAGE pragmas of the source file. Throws a 5 if flag parsing fails (including unsupported flags.)ghc-lib-parser4Complain about non-dynamic flags in OPTIONS pragmas. Throws a  if the input list is non-empty claiming that the input flags are unknown.ghc-lib-parser Parse this.ghc-lib-parserFilename the buffer came from. Used for reporting parse error locations.ghc-lib-parserThe original source filename (used for locations in the function result)ghc-lib-parserThe source imports and normal imports (with optional package names from -XPackageImports), and the module name.ghc-lib-parser Input fileghc-lib-parserParsed options, if any.ghc-lib-parser Input Bufferghc-lib-parser)Source filename. Used for location info.ghc-lib-parserParsed options.None%5 [ ghc-lib-parserOutput should be to a temporary file: we're going to run more compilation steps on this output later.ghc-lib-parserWe want a persistent file, i.e. a file in the current directory derived from the input filename, but with the appropriate extension. eg. in "ghc -c Foo.hs" the output goes into ./Foo.o.ghc-lib-parserThe output must go into the specific outputFile in DynFlags. We don't store the filename in the constructor as it changes when doing -dynamic-too.ghc-lib-parseronly the DynFlags change in the HscEnv. The DynFlags change at various points, for example when we read the OPTIONS_GHC pragmas in the Cpp phase.ghc-lib-parserthe ModLocation. This is discovered during compilation, in the Hsc phase where we read the module header.ghc-lib-parseradditional object files resulting from compiling foreign code. They come from two sources: foreign stubs, and add{C,Cxx,Objc,Objcxx}File from template haskellghc-lib-parserInterface generated by HscOut phase. Only available after the phase runs.ghc-lib-parserStop just before this phaseghc-lib-parser!basename of original input sourceghc-lib-parser!basename of original input sourceghc-lib-parser its extensionghc-lib-parser%says where to put the pipeline output  None5<= d ghc-lib-parser-A function called to log warnings and errors.ghc-lib-parserA monad transformer to add GHC specific features to another monad.Note that the wrapped monad must support IO and handling of exceptions.ghc-lib-parserThe Session is a handle to the complete state of a compilation session. A compilation session consists of a set of modules constituting the current program or library, the context for interactive evaluation, and various caches.ghc-lib-parserA minimal implementation of a . If you need a custom monad, e.g., to maintain additional state consider wrapping this monad or using .ghc-lib-parser:A monad that has all the features needed by GHC API calls.In short, a GHC monadallows embedding of IO actions,can log warnings,/allows handling of (extensible) exceptions, andmaintains a current session.If you do not use  or , make sure to call 5 before any call to the GHC API functions can occur.ghc-lib-parser+Call the argument with the current session.ghc-lib-parser#Grabs the DynFlags from the Sessionghc-lib-parserSet the current session to the result of applying the current session to the argument.ghc-lib-parser3Call an action with a temporarily modified Session.ghc-lib-parser(A monad that allows logging of warnings.ghc-lib-parserReflect a computation in the  monad into the D monad.>You can use this to call functions returning an action in the  monad inside an D action. This is needed for some (too restrictive) callback arguments of some library functions: libFunc :: String -> (Int -> IO a) -> IO a ghcFunc :: Int -> Ghc a ghcFuncUsingLibFunc :: String -> Ghc a -> Ghc a ghcFuncUsingLibFunc str = reifyGhc $ \s -> libFunc $ \i -> do reflectGhc (ghcFunc i) sghc-lib-parserPrint the error message and all warnings. Useful inside exception handlers. Clears warnings after printing.SSNone5 nlghc-lib-parserThe monad used by Core-to-Core passes to register simplification statistics. Also used to have common state (in the form of UniqueSupply) for generating Uniques.Ӊghc-lib-parser'A description of the plugin pass itself։ghc-lib-parserJust n  = float lambdas to top level, if doing so will abstract over n or fewer value variables Nothing  = float all lambdas to top level, regardless of how many free variables Just 0 is the vanilla case: float a lambda iff it has no free vars׉ghc-lib-parserTrue  = float constants to top level, even if they do not escape a lambda؉ghc-lib-parserTrue  = float out over-saturated applications based on arity information. See Note [Floating over-saturated applications] in GHC.Core.Opt.SetLevelsىghc-lib-parser%Allow floating to the top level only.ghc-lib-parserLift an D operation into  while consuming its ҉ghc-lib-parserGet all annotations of a given type. This happens lazily, that is no deserialization will take place until the [a] is actually demanded and the [a] can also be empty (the UniqFM is not filtered).This should be done once at the start of a Core-to-Core pass that uses annotations.See Note [Annotations]ghc-lib-parserGet at most one annotation of a given type per annotatable item.ghc-lib-parser%Output a String message to the screenghc-lib-parserOutput a message to the screenghc-lib-parserOutput an error to the screen. Does not cause the compiler to die.ghc-lib-parserOutput an error to the screen. Does not cause the compiler to die.ghc-lib-parserOutput a fatal error to the screen. Does not cause the compiler to die.ghc-lib-parserOutput a fatal error to the screen. Does not cause the compiler to die.ghc-lib-parser8Output a string debugging message at verbosity level of -v or higherghc-lib-parser2Outputs a debugging message at verbosity level of -v or higherghc-lib-parserShow some labelled  8 if a particular flag is set or at a verbosity level of -v -ddump-most or higherghc-lib-parserMaskSB‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщ҉ӉԉՉ։׉؉ىډۉ܉݉މ߉ډۉ܉݉މ߉ԉՉ։׉؉ىӉ҉‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщBSNone u)ghc-lib-parser1Bind a binding group over an expression, using a let or case as appropriate (see GHC.Core#let_app_invariant)ghc-lib-parserCreate a lambda where the given expression has a number of variables bound over it. The leftmost binder is that bound by the outermost lambda in the resultghc-lib-parserBind a list of binding groups over an expression. The leftmost binding group becomes the outermost group in the resulting expressionghc-lib-parserConstruct an expression which represents the application of a number of expressions to that of a data constructor expression. The leftmost expression in the list is applied firstghc-lib-parserConstruct an expression which represents the application of a number of expressions to another. The leftmost expression in the list is applied first Respects the let/app invariant by building a case expression where necessary See Note [Core let/app invariant] in GHC.Coreghc-lib-parserConstruct an expression which represents the application of one expression to the other Respects the let/app invariant by building a case expression where necessary See Note [Core let/app invariant] in GHC.Coreghc-lib-parserMake a wildcard binder. This is typically used when you need a binder that you expect to use only at a *binding* site. Do not use it at occurrence sites because it has a single, fixed unique, and it's very easy to get into difficulties with shadowing. That's why it is used so little. See Note [WildCard binders] in GHC.Core.Opt.Simplify.Envghc-lib-parser Create a N" which will evaluate to the given Intghc-lib-parser Create a N" which will evaluate to the given Int. Don't check that the number is in the range of the target platform Intghc-lib-parser Create a N" which will evaluate to the given Intghc-lib-parser Create a N which will evaluate to the a Word with the given valueghc-lib-parser Create a N" which will evaluate to the given Integerghc-lib-parser Create a N" which will evaluate to the given Naturalghc-lib-parser Create a N" which will evaluate to the given FloatŠghc-lib-parser Create a N" which will evaluate to the given DoubleÊghc-lib-parser Create a N" which will evaluate to the given CharĊghc-lib-parser Create a N" which will evaluate to the given StringŊghc-lib-parser Create a N which will evaluate to a string morally equivalent to the given  FastStringNJghc-lib-parserBuild the type of a small tuple that holds the specified variables One-tuples are flattened; see Note [Flattening one-tuples]Ȋghc-lib-parserBuild a small tuple holding the specified expressions One-tuples are flattened; see Note [Flattening one-tuples]Ɋghc-lib-parserBuild a small unboxed tuple holding the specified expressions, with the given types. The types must be the types of the expressions. Do not include the RuntimeRep specifiers; this function calculates them for you. Does not5 flatten one-tuples; see Note [Flattening one-tuples]ʊghc-lib-parser=Make a core tuple of the given boxity; don't flatten 1-tuplesˊghc-lib-parserBuild an unboxed sum.)Alternative number ("alt") starts from 1.̊ghc-lib-parserBuild a big tuple holding the specified variables One-tuples are flattened; see Note [Flattening one-tuples]Ίghc-lib-parserBuild the type of a big tuple that holds the specified variables One-tuples are flattened; see Note [Flattening one-tuples]ϊghc-lib-parserBuild a big tuple holding the specified expressions One-tuples are flattened; see Note [Flattening one-tuples]Њghc-lib-parserBuild the type of a big tuple that holds the specified type of thing One-tuples are flattened; see Note [Flattening one-tuples]ъghc-lib-parserThe unit expressionҊghc-lib-parserӊ is like Ҋ but one-tuples are NOT flattened (see Note [Flattening one-tuples])Builds a selector which scrutises the given expression and extracts the one name from the list given. If you want the no-shadowing rule to apply, the caller is responsible for making sure that none of these names are in scope.If there is just one #7 in the tuple, then the selector is just the identity.0If necessary, we pattern match on a "big" tuple.A tuple selector is not linear in its argument. Consequently, the case expression built by Ҋ must consume its scrutinee =? times. And all the argument variables must have multiplicity =.ӊghc-lib-parserBuilds a selector which scrutises the given expression and extracts the one name from the list given. If you want the no-shadowing rule to apply, the caller is responsible for making sure that none of these names are in scope.If there is just one #7 in the tuple, then the selector is just the identity.0If necessary, we pattern match on a "big" tuple.A tuple selector is not linear in its argument. Consequently, the case expression built by Ҋ must consume its scrutinee =? times. And all the argument variables must have multiplicity =.Ԋghc-lib-parserڏ is like Ԋ but one-tuples are NOT flattened (see Note [Flattening one-tuples])Like Ҋ7 but for tuples that are guaranteed never to be "big". mkSmallTupleSelector [x] x v e = [| e |] mkSmallTupleSelector [x,y,z] x v e = [| case e of v { (x,y,z) -> x } |]Պghc-lib-parserA generalization of Ҋ?, allowing the body of the case to be an arbitrary expression.;To avoid shadowing, we use uniques to invent new variables./If necessary we pattern match on a "big" tuple.֊ghc-lib-parserAs Պ, but for a tuple that is small enough to be guaranteed not to need nesting.؊ghc-lib-parser/Applies the floats from right to left. That is wrapFloats [b1, b2, @, bn] u = let b1 in let b2 in @ in let bn in uڊghc-lib-parser Makes a list [] for lists of the specified typeۊghc-lib-parser Makes a list (:) for lists of the specified type܊ghc-lib-parserMake a list containing the given expressions, where the list has the given type݊ghc-lib-parserMake a fully applied  expressionފghc-lib-parserMake a build6 expression applied to a locally-bound worker functionߊghc-lib-parser&Makes a Nothing for the specified typeghc-lib-parser/Makes a Just from a value of the specified typeҊghc-lib-parserThe #$s to pattern match the tuple againstghc-lib-parserThe # to selectghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutineeghc-lib-parserSelector expressionӊghc-lib-parserThe #$s to pattern match the tuple againstghc-lib-parserThe # to selectghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutineeghc-lib-parserSelector expressionՊghc-lib-parser-For inventing names of intermediate variablesghc-lib-parser)The tuple identifiers to pattern match onghc-lib-parserBody of the caseghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutinee֊ghc-lib-parserThe tuple argsghc-lib-parserBody of the caseghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutinee݊ghc-lib-parserElement type of the listghc-lib-parserFold result typeghc-lib-parserCons! function expression for the foldghc-lib-parserNil expression for the foldghc-lib-parser#List expression being folded acressފghc-lib-parser!Type of list elements to be builtghc-lib-parser+Function that, given information about the #s of the binders for the build worker function, returns the body of that workerhŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊhŠÊĊŊƊ׊؊يNJȊɊˊʊъ̊͊ΊЊϊԊ֊ҊӊՊڊۊ܊݊ފߊ44None ghc-lib-parserReturns Just (bndr,rhs) if the binding is a join point: If it's a JoinId, just return it If it's not yet a JoinId but is always tail-called, make it into a JoinId and return it. In the latter case, eta-expand the RHS if necessary, to make the lambdas explicit, as is required for join pointsPrecondition: the InBndr has been occurrence-analysed, so its OccInfo is validghc-lib-parserReturns 'Just ([b1..bp], dc, [t1..tk], [x1..xn]) if the argument expression is a *saturated* constructor application of the form *let b1 in .. let bp in dc t1..tk x1 .. xn>, where t1..tk are the *universally-quantified* type args of dc. Floats can also be (and most likely are) single-alternative case expressions. Why does  return floats? We may have to look through lets and cases to detect that we are in the presence of a data constructor wrapper. In this case, we need to return the lets and cases that we traversed. See Note [exprIsConApp_maybe on data constructors with wrappers]. Data constructor wrappers are unfolded late, but we really want to trigger case-of-known-constructor as early as possible. See also Note [Activation for data constructor wrappers] in GHC.Types.Id.Make.We also return the incoming InScopeSet, augmented with the binders from any [FloatBind] that we return  None Qghc-lib-parserMake an unfolding that may be used unsaturated (ug_unsat_ok = unSaturatedOk) and that is reported as having its manifest arity (the number of outer lambdas applications will resolve before doing any work).ghc-lib-parserMake an unfolding that will be used once the RHS has been saturated to the given arity.ghc-lib-parserSees if the unfolding is pretty certain to inline. If so, return a *stable* unfolding for it, that will always inline.!NNOQQ!NNOQQNone #$&5 xghc-lib-parserMatch the scrutinee of a case and potentially return a new scrutinee and a function to apply to each literal alternative.}None ,ghc-lib-parserData Constructor Boxer",,,,,,5,,,,,5,None "9999999‹ËċŋƋNjȋɋʋˋ̋͋΋ϋЋыҋӋԋ"9999‹9ċŋ9Ë9Ƌ͋Njȋɋʋˋ̋΋ϋЋыҋӋԋNone&5 ۋghc-lib-parser Type-check a N!. See Note [Core Lint guarantee].ߋghc-lib-parserThis checks whether a pass correctly looks through debug annotations ( SourceNote). This works a bit different from other consistency checks: We check this by running the given task twice, noting all differences between the results. Ջ֋׋؋ًڋۋ܋݋ދߋ ۋ܋ًڋ݋ߋދՋ֋؋׋None&5 V?ghc-lib-parserThe plugin found a contradiction. The returned constraints are removed from the inert set, and recorded as insoluble.ghc-lib-parserThe first field is for constraints that were solved. These are removed from the inert set, and the evidence for them is recorded. The second field contains new work, that should be processed by the constraint solver.ghc-lib-parser.Initialize plugin, when entering type-checker.ghc-lib-parserSolve some constraints. TODO: WRITE MORE DETAILS ON HOW THIS WORKS.ghc-lib-parser9Clean up after the plugin, when exiting the type-checker.ghc-lib-parser summarises what was imported from where, irrespective of whether the imported things are actually used or not. It is used: when processing the export list,4when constructing usage info for the interface file,to identify the list of directly imported modules for initialisation purposes and for optimised overlap checking of family instances,/when figuring out what things are really unusedghc-lib-parser'Domain is all directly-imported modules,See the documentation on ImportedModsVal in GHC.Driver.Types for the meaning of the fields.We need a full ModuleEnv rather than a ModuleNameEnv here, because we might be importing modules of the same name from different packages. (currently not the case, but might be in the future).ghc-lib-parser8Home-package modules needed by the module being compiledIt doesn't matter whether any of these dependencies are actually used when compiling the module; they are listed if they are below it at all. For example, suppose M imports A which imports X. Then compiling M might not need to consult X.hi, but X is still listed in M's dependencies.ghc-lib-parserPackages needed by the module being compiled, whether directly, or via other modules in this package, or via modules imported from other packages.ghc-lib-parserThis is strictly a subset of imp_dep_pkgs and records the packages the current module needs to trust for Safe Haskell compilation to succeed. A package is required to be trusted if we are dependent on a trustworthy module in that package. While perhaps making imp_dep_pkgs a tuple of (UnitId, Bool) where True for the bool indicates the package is required to be trusted is the more logical design, doing so complicates a lot of code not concerned with Safe Haskell. See Note [Tracking Trust Transitively] in GHC.Rename.Namesghc-lib-parserDo we require that our own package is trusted? This is to handle efficiently the case where a Safe module imports a Trustworthy module that resides in the same package as it. See Note [Trust Own Package] in GHC.Rename.Namesghc-lib-parserOrphan modules below us in the import tree (and maybe including us for imported modules)ghc-lib-parserFamily instance modules below us in the import tree (and maybe including us for imported modules)ghc-lib-parser>IsGroupClosed describes a group of mutually-recursive bindingsghc-lib-parser+IdBindingInfo describes how an Id is bound.?It is used for the following purposes: a) for static forms in  and b) to figure out when a nested binding can be generalised, in .ghc-lib-parser?A typecheckable thing available in a local context. Could be  1, but also lexically scoped variables, etc. See GHC.Tc.Utils.Env for how to retrieve a  given a .ˌghc-lib-parserType alias for s; the convention is we'll use this for mutable bits of data in  which are updated during typechecking and returned at the end.ghc-lib-parser describes the top-level of the module at the point at which the typechecker is finished work. It is this structure that is handed on to the desugarer For state that needs to be updated during the typechecking phase and returned at end, use a ˌ (= s).ghc-lib-parserModule being compiledghc-lib-parserIf a signature, the backing module See also Note [Identity versus semantic module]ghc-lib-parser4What kind of module (regular Haskell, hs-boot, hsig)ghc-lib-parser$Top level envt; used during renamingghc-lib-parserTypes used for defaulting. Nothing => no default declghc-lib-parserJust for things in this moduleghc-lib-parserJust for things in this module See Note [The interactive package] in GHC.Driver.Typesghc-lib-parserGlobal type env for the module we are compiling now. All TyCons and Classes (for this module) end up in here right away, along with their derived constructors, selectors.(Ids defined in this module start in the local envt, though they move to the global envt during zonking)NB: for what "things in this module" means, see Note [The interactive package] in GHC.Driver.Typesghc-lib-parserInstance envt for all  home-package modules; Includes the dfuns in tcg_insts NB. BangPattern is to fix a leak, see #15111ghc-lib-parserDitto for family instances NB. BangPattern is to fix a leak, see #15111ghc-lib-parserAnd for annotationsghc-lib-parserWhat is exportedghc-lib-parserInformation about what was imported from where, including things bound in this module. Also store Safe Haskell info here about transitive trusted package requirements.There are not many uses of this field, so you can grep for all them.The ImportAvails records information about the following things: 6All of the modules you directly imported (tcRnImports)The orphans (only!) of all imported modules in a GHCi session (runTcInteractive)(The module that instantiated a signature%Each of the signatures that merged inIt is used in the following ways: - imp_orphs is used to determine what orphan modules should be visible in the context (tcVisibleOrphanMods) - imp_finsts is used to determine what family instances should be visible (tcExtendLocalFamInstEnv) - To resolve the meaning of the export list of a module (tcRnExports) - imp_mods is used to compute usage info (mkIfaceTc, deSugar) - imp_trust_own_pkg is used for Safe Haskell in interfaces (mkIfaceTc, as well as in GHC.Driver.Main) - To create the Dependencies field in interface (mkDependencies)ghc-lib-parserTrue" <=> Template Haskell syntax used.We need this so that we can generate a dependency on the Template Haskell package, because the desugarer is going to emit loads of references to TH symbols. The reference is implicit rather than explicit, so we have to zap a mutable variable.ghc-lib-parserTrue( <=> A Template Haskell splice was used.2Splices disable recompilation avoidance (see #481)ghc-lib-parser&Allows us to choose unique DFun names.ghc-lib-parserThe requirements we merged with; we always have to recompile if any of these changed.ghc-lib-parserRenamed decls, maybe. Nothing! <=> Don't retain renamed decls.ghc-lib-parser"dependencies from addDependentFileghc-lib-parser'Top-level declarations from addTopDeclsghc-lib-parserForeign files emitted from TH.ghc-lib-parser>Exact names bound in top-level declarations in tcg_th_topdeclsghc-lib-parser#Template Haskell module finalizers.+They can use particular local environments.ghc-lib-parser,Core plugins added by Template Haskell code.ghc-lib-parserTemplate Haskell stateghc-lib-parserMaybe Haddock header docsghc-lib-parserTrue if any part of the prog uses hpc instrumentation. NB. BangPattern is to fix a leak, see #15111ghc-lib-parser5Whether this module has a corresponding hi-boot fileghc-lib-parserThe Name of the main function, if this module is the main module.ghc-lib-parserHas the typechecker inferred this module as -XSafe (Safe Haskell) See Note [Safe Haskell Overlapping Instances Implementation], although this is used for more than just that failure case.ghc-lib-parser9A list of user-defined plugins for the constraint solver.ghc-lib-parser8A list of user-defined plugins for hole fit suggestions.ghc-lib-parser%The RealSrcSpan this module came fromghc-lib-parserWanted constraints of static forms. See Note [Constraints in static forms].ghc-lib-parser,Tracking indices for cost centre annotationsghc-lib-parser describes the result of running the frontend of a Haskell module. Currently one always gets a , since running the frontend involves typechecking a program. hs-sig merges are not handled here.This data type really should be in GHC.Driver.Types, but it needs to have a TcGblEnv which is only defined here.Íghc-lib-parser0Historical "type-checking monad" (now it's just ɍ).čghc-lib-parser+Historical "renaming monad" (now it's just ɍ).ˍghc-lib-parserA ˍ is a substitution on s that can be used to refine the identities of a hole while we are renaming interfaces (see GHC.Iface.Rename). Specifically, a ˍ for ns_module_name A, defines a mapping from {A.T} (for some  T) to some arbitrary other ."The most intruiging thing about a ˍ(, however, is how it's constructed. A ˍ is *implied* by the exported &s of the implementor of an interface: if an implementor of signature  exports M.T-, you implicitly define a substitution from {H.T} to M.T. So a ˍ is computed from the list of &s that are exported by the implementation of a module, or successively merged together by the export lists of signatures which are joining together.It's not the most obvious way to go about doing this, but it does seem to work!NB: Can't boot this and put it in NameShape because then we start pulling in too many DynFlags things.ԍghc-lib-parserGet target platformghc-lib-parserUnion two ImportAvailsThis function is a key part of Import handling, basically for each import we create a separate ImportAvails structure and then union them all together with this function.ghc-lib-parser#No signature or a partial signatureghc-lib-parser;This function provides an escape for direct access to the Í: monad. It should not be used lightly, and the provided  API should be favoured instead.ghc-lib-parser Access the Z carried by the & during constraint solving. Returns H if invoked during  or .ghc-lib-parser Check the  for consistency. Currently, only checks axioms, but should check other aspects, too.YΌόЌьҌӌԌՌ֌׌،ٌڌیYYYYŒÌČŌƌnjȌɌʌˌ̌͌܌݌ތߌÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍʍɍÍčȍƍǍˌYΌόЌьҌӌԌՌ֌׌،ٌڌیYYYYЍ͌эҍߍݍލ̌ȌČŌƌnj܌݌ތߌۍ܍ōŒÌՍ֍׍؍ٍڍʌɌˍ͍̍΍ύӍԍ'None Wghc-lib-parser7A HoleFitPlugin is a pair of candidate and fit plugins.ghc-lib-parserHoleFitPluginR adds a TcRef to hole fit plugins so that plugins can track internal state. Note the existential quantification, ensuring that the state cannot be modified from outside the plugin.ghc-lib-parser0Initializes the TcRef to be passed to the pluginghc-lib-parser'The function defining the plugin itselfghc-lib-parser7Cleanup of state, guaranteed to be called even on errorghc-lib-parser=A plugin for modifying hole fits *after* they've been found.ghc-lib-parserA plugin for modifying the candidate hole fits *before* they're checked.ghc-lib-parserHoleFit is the type we use for valid hole fits. It contains the element that was checked, the Id of that element as found by tcLookup, and the refinement level of the fit, which is the number of extra argument holes that this fit uses (e.g. if hfRefLvl is 2, the fit is for `Id _ _`).ghc-lib-parserA fit that is just displayed as is. Here so thatHoleFitPlugins can inject any fit they want.ghc-lib-parserThe elements id in the TcMghc-lib-parserThe candidate that was checked.ghc-lib-parser$The type of the id, possibly zonked.ghc-lib-parser The number of holes in this fit.ghc-lib-parserThe wrapper for the match.ghc-lib-parser;What the refinement variables got matched with, if anythingghc-lib-parser,Documentation of this HoleFit, if available.ghc-lib-parserHoleFitCandidates are passed to hole fit plugins and then checked whether they fit a given typed-hole.ghc-lib-parserAny relevant Cts to the holeghc-lib-parserThe nested implications of the hole with the innermost implication first.ghc-lib-parser2The hole itself, if available. Only for debugging.  None #ghc-lib-parserA static plugin with its arguments. For registering compiled-in plugins through the GHC API.ghc-lib-parser>A plugin with its arguments. The result of loading the plugin.ghc-lib-parser is the compiler plugin data type. Try to avoid constructing one of these directly, and just modify some fields of ʎ instead: this is to try and preserve source-code compatibility when we add fields to this.Nonetheless, this API is preliminary and highly likely to change in the future.ghc-lib-parser9the actual plugin together with its commandline argumentsghc-lib-parser9the actual plugin together with its commandline argumentsghc-lib-parser the module containing the pluginghc-lib-parserthe actual callable pluginghc-lib-parser%command line arguments for the pluginghc-lib-parserModify the Core pipeline that will be used for compilation. This is called as the Core pipeline is built for every module being compiled, and plugins get the opportunity to modify the pipeline in a nondeterministic order.ghc-lib-parserAn optional typechecker plugin, which may modify the behaviour of the constraint solver.ghc-lib-parserAn optional plugin to handle hole fits, which may re-order or change the list of valid hole fits and refinement hole fits. ghc-lib-parserAn optional plugin to update  , right after plugin loading. This can be used to register hooks or tweak any field of  ) before doing actual work on a module.ghc-lib-parser3Specify how the plugin should affect recompilation.ghc-lib-parser8Modify the module when it is parsed. This is called by GHC.Driver.Main when the parsing is successful.ghc-lib-parserModify each group after it is renamed. This is called after each _ has been renamed.ghc-lib-parserModify the module when it is type checked. This is called at the very end of typechecking.Žghc-lib-parser4Modify the TH splice or quasiqoute before it is run.Îghc-lib-parser>Modify an interface that have been loaded. This is called by GHC.Iface.Load when an interface is successfully loaded. Not applied to the loading of the plugin interface. Tools that rely on information from modules other than the currently compiled one should implement this function.Ďghc-lib-parserCommand line options gathered from the -PModule.Name:stuff syntax are given to you as this typeʎghc-lib-parserDefault plugin: does nothing at all, except for marking that safe inference has failed unless -fplugin-trustworthy is passed. For compatibility reason you should base all your plugin definitions on this default value.ˎghc-lib-parserA renamer plugin which mades the renamed source available in a typechecker plugin.͎ghc-lib-parser9Perform an operation by using all of the plugins in turn.ώghc-lib-parserPerform a constant operation by using all of the plugins in turn./ŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎ/ŽÎʎĎǎȎɎЎˎ̎ƎŎΎ͎ώNone ghc-lib-parserHooks can be used by GHC API clients to replace parts of the compiler pipeline. If a hook is not installed, GHC uses the default built-in behaviourߎގݎ܎ێڎَ؎׎֎ԎՎԎՎ֎׎؎َڎێ܎ݎގߎۏ                                                                                                                                                                                 ! ! ! ! ! ! ! " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ % % % % % % & ' ( ) * * * * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , - - - - - . . . . . . . . . . . . . . . . / / / /   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1                      2 2 22 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 5 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 77888899999999999999:::::::::::::::::::::::::::                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<==========>>>>>>>>>>>>>>>>>>>> >>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??????@@@@@@@222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222AAAAAAAAAAABBBBBBCCCCCCDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKLLLLLLLLLLLLLLLLOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW,,,,,,,,,,,,,,,,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[3333333333 3333333 33333333333333333 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333\\ \ \ ] ] ] ] ] ] ] ] ] ] ] ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _                          ` ` ` ` ` ` ` a a a a a a a a a a a a a a a a a a a a a a a a a a a a!a!a!a!a!a!a!a!a!a!a!a!a! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !b!b b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!c!c!c!c!N!N!N!N!N!N!N!N!N!N!N!N!N!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d!d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"d"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"e"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"f"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g"g")")")")")")")")")")")")")")")")")")")")")")")")")")")#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($($h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i%i%i%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%j%k%k%k%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%m%m%m%m%m%m%m%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%*%*%*%*%*%*%*%*%*%*%*&*&*&*"*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&**&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&o&o&o&o&o&o&o&o&o&o&o&o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'o'p'p'p'p'p'p$p'p'p$p$p'p'p'p$q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(q(r(r(r(r(r(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(t(t(t(t(t(t(t(t(t(t(t(t(t(t(t(t(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u)u)u)u)u)u)u)u)u)u)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)vv)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v*v*v*v*w*w*w*w*ww*w*w*w*w*w*w*w*w*w*ww*wwwwwwwwww*w*ww*ww*www*ww*www*wwwwwwwwwww*wwwwwwwwwwwww*ww*w*www*ww*wwww*w*www*ww*w*w*www*wwww*wwwww*w*wwww*www*www*ww*www*ww*ww*ww*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x-x-x,x,x,x-x-xxx-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-y-y-z-z-z-z-z-z-zz-z-z-z-z-z-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-{-|-|-|-|-|-|-|-|-|-|-|-|-|-|-}-}-}-}-}-}-~~-~-~-------------................................................................................................................................M.M.M.M.M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M/M///////////////////////////////////////////////////////////////////////////////////////////////////000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777c7c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c&c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c99999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;LL;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L;L<L<L<L<L<L<L< < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N>N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N??????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAA!AAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOArArArArArArArArArArArArArArrArArArArArAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@E@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@@G@G@G@G@G@G@G@G@G@G@G@G@@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@G@H@H@H@H@H@H@H@H@HQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQHQH?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H??H?H??H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?H?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?I?IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLL|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|L|LLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN~N~N~N~O~O~O~O~O~O~O~O~O~O~O~O~O~O~O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQC&CQC&CQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQCQQQQQQQQQQQ&&Q&QQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS@SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnSnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTnTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW*WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDYDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,\\\\\\\\\\\\\\\\\\\\\,\\,\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]y]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__________________,__________________________________________________________________________________,_____________________________________````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$c$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$d$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$f$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$g$gggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhh+hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhPhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKYKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiKiiiiiiiiiiii<<<iiiiiiii<iiiiiiijjjjjjjjjjj==<j=jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj^jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmkmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmm.mmmm;;______mmm%&%nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnWnnnnnnnnnnnnnnnnnnnnnCn%nnn^nnnnnnnnnnnnnnn!nnnn!nnnnnnn((nnnnn^^^^^nnnnn_nnnnn_nnnnnnnnnn_nnnnnnnnnnnnnnnnnnnAoooooooooooooooooooooooooooooooooooooo-ooooooooooooooooooooooPoooooooooooooooooooooooooooooooooooooooo"ooooooooo      ooooooooooooooooooooooooooooopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp"pp#ppppppppppppppppppppppp$pppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrr<rrrrrrrrrrrrr...rr<<<rrrrrrr&&&rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr""r"rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr$$rrrrrr##rrss###ssssssssssssssssssss  ssssssssssssssssssss]ss#ssssssssssssssssssssssssssssssAssssssssssssssssssssssssssssssssssssssssssssssssssssssttt_.tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvttuuuuuuuuuuuuuuuuuuuuuvttttzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvz(zvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvz+zvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvz+zvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvzvznzwzwzwzwzwzwz-zwzwzwzwzozozwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwz+zwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzAzAzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzvzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzwzxzxzxzxzRzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzqzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzqzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzqzzzzzzzzz{{{{{q{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{r{{{{{r{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~A~~~~~~~~~~~~~~~~~~~~~~~~~#!%.&#$€ÀĀŀƀǀȀɀʀˀ̀̀̀΀πЀЀрҀӀԀՀՀր׀؀ـڀۀ܀݀ހ߀ÁāŁƁǁǁȁɁʁˁ́́́΁ρЁсҁӁԁՁցցׁ؁ففځہ܁݁݁ށ߁‚ÂĂĂłƂǂȂɂʂ˂˂̂͂΂ςЂЂт҂ӂԂԂՂւׂׂ؂قڂۂ܂݂ނނ߂A^ƒÃăŃƃǃȃɃʃʃ˃̃̓΃σЃу҃ӃԃՃփ׃؃كڃۃ܃݃ރ߃„ÄĄńƄDŽDŽȄɄʄ˄˄̄̈́΄τЄф҄ӄԄՄքׄ؄لڄۄ܄݄ބ߄…ÅąŅƅDžȅɅʅ˅̅ͅ΅υЅх҅ӅԅՅօׅ؅مڅۅ܅݅ޅ߅II†ÆĆņƆdžȆɆʆˆ̆͆ΆφІц҆҆ӆԆԆՆՆֆ׆؆نچۆ܆݆ކ߆P‡ÇćŇƇHLJHȇHɇHHʇˇ͇̇·χЇч҇ӇԇՇևׇ؇هڇۇ܇݇އ߇ˆÈĈ}ň}ƈ}Lj}Ȉ}Ɉ}ʈ}ˈ}̈}͈}Έ}ψ}Ј}ш}҈}ӈ}Ԉ}Ո}ֈ}׈}؈}و}ڈۈ܈݈ވ߈H‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщЉ҉ӉԉՉ։׉؉ىډۉ܉݉މ߉ZŠÊĊŊŊƊNJȊɊʊˊ̊͊͊ΊϊЊЊъҊӊԊՊ֊׊؊يڊۊ܊݊݊ފߊ'''''' ''''''''''''''''''''''''''''''''''   ‹ËċŋƋNjȋɋʋˋ̋͋΋ϋЋыҋӋԋՋ֋׋؋ًڋۋ܋݋ދߋmucM??ŒÌČŌƌnnjȌɌʌKˌǨ͌ΌόЌьҌӌ-ԌԌՌ֌4ghc-lib-parser-9.0.1.20210324-KhT8gCGlMUXDIBlo6O2TR9 GHC.PreludeGHC.Utils.PanicGHC.Utils.MonadGHC.Utils.FingerprintGHC.Utils.Misc GHC.Platform GHC.Unit.InfoGHC.Data.IOEnvGHC.Core.TyCo.FVsGHC.Data.Graph.DirectedGHC.Data.Maybe GHC.BaseDirGHC.Exts.Heap.ClosureTypesGHC.Exts.Heap.ConstantsGHC.Exts.Heap.InfoTable.TypesGHC.Exts.Heap.InfoTableGHC.Exts.Heap.InfoTableProfGHC.Exts.Heap.ClosuresGHC.Exts.Heap.Utils GHC.Exts.HeapGHC.ForeignSrcLang.TypeGHC.ForeignSrcLangGHC.Iface.TypeGHC.LanguageExtensions.TypeGHC.LanguageExtensions GHC.LexemeGHC.Driver.PluginsGHC.Driver.HooksGHC.Driver.BackendGHC.Data.StreamGHC.Data.FiniteMapGHC.Data.FastMutIntGHC.Data.EnumSetGHC.Cmm.Dataflow.CollectionsGHC.Cmm.Dataflow.BlockGHC.Builtin.PrimOpsGHC.SerializedGHC.SysTools.TerminalGHC.Tc.Errors.Hole.FitTypesGHC.Types.NameGHC.Types.Name.Occurrence GHC.Types.VarGHC.Unit.DatabaseGHC.Unit.Module.NameGHC.Utils.CliOptionGHC.Utils.EncodingGHC.Utils.Exception GHC.SettingsGHC.Utils.IO.UnsafeGHC.Utils.OutputableGHC.Unit.Types GHC.VersionGHC.UniqueSubdirGHC.Settings.ConfigGHC.Utils.Panic.PlainGHC.SysTools.BaseDirGHC.Parser.CharClassGHC.Utils.Ppr.ColourGHC.Data.FastStringGHC.Utils.LexemeGHC.Utils.BufHandle GHC.Utils.PprGHC.Unit.StateGHC.Driver.SessionGHC.Utils.Json GHC.Unit.PprGHC.Types.Id.InfoGHC.Tc.Utils.TcTypeGHC.Driver.FlagsGHC.Driver.Ways GHC.Data.PairGHC.Data.OrdListGHC.Data.List.SetOps GHC.Data.BagGHC.HsToCore.PmCheck.TypesGHC.Core.TyCo.RepGHC.Core.Coercion GHC.Core.TypeGHC.Core.TyCo.PprGHC.Types.SrcLocGHC.Utils.ErrorGHC.Driver.CmdLineGHC.Types.BasicGHC.Types.UniqueGHC.Types.Unique.SupplyGHC.Types.Unique.FMGHC.Utils.BinaryGHC.Driver.PhasesGHC.Types.Unique.DFMGHC.Types.Unique.SetGHC.Types.Unique.DSetGHC.Unit.ParserGHC.Unit.Module.LocationGHC.Unit.Module.EnvGHC.Unit.ModuleGHC.Platform.Reg.ClassGHC.Platform.RegGHC.Data.BooleanFormulaGHC.Core.TyConGHC.Types.ForeignCall GHC.Types.CprGHC.Data.StringBufferGHC.Data.FastString.EnvGHC.Types.Name.SetGHC.Types.Name.EnvGHC.Types.AnnotationsGHC.Iface.Recomp.Binary GHC.Hs.DocGHC.Builtin.UniquesGHC.Builtin.TypesGHC.Types.Var.Set GHC.Utils.FVGHC.Types.Var.EnvGHC.Core.PatSynGHC.Core.ClassGHC.Types.FieldLabelGHC.Types.AvailGHC.Types.Name.ReaderGHC.Parser.AnnotationGHC.Hs.Extension GHC.Hs.Pat GHC.Hs.Expr GHC.Hs.ImpExpGHC.Core.DataConGHC.Types.Id.MakeGHC.Core.ConLikeGHC.Types.CostCentre.StateGHC.Types.CostCentreGHC.Core.Coercion.AxiomGHC.Builtin.NamesGHC.Settings.ConstantsGHC.CoreToIfaceGHC.Core.MultiplicityGHC.Core.TyCo.TidyGHC.Core.TyCo.SubstGHC.Builtin.Types.PrimGHC.Types.LiteralGHC.Data.TrieMapGHC.Cmm.Dataflow.LabelGHC.Cmm.Dataflow.GraphGHC.Cmm.BlockId GHC.Hs.LitGHC.Core.UtilsGHC.Core.UsageEnvGHC.Core.UnifyGHC.Core.PredicateGHC.SysTools.FileCleanupGHC.Parser.LexerGHC.Types.RepTypeGHC.Types.DemandGHC.StgToCmm.TypesGHC.Runtime.Heap.LayoutGHC.Core GHC.Types.IdGHC.Core.UnfoldGHC.Core.Stats GHC.Core.Seq GHC.Core.Ppr GHC.Core.MapGHC.Core.FamInstEnvGHC.Types.Name.CacheGHC.Iface.Syntax GHC.Hs.Type GHC.Core.FVs GHC.Tc.TypesGHC.Core.InstEnvGHC.Tc.Types.Evidence GHC.Hs.Binds GHC.Hs.DeclsGHC.Core.Coercion.Opt GHC.Cmm.TypeGHC.CmmToAsm.ConfigGHC.Cmm.MachOpGHC.Stg.SyntaxGHC.Core.SubstGHC.Core.Opt.ArityGHC.Core.Opt.OccurAnalGHC.Cmm.SwitchGHC.Cmm.CLabel GHC.Cmm.ExprGHC.Platform.X86_64GHC.Platform.X86GHC.Platform.SPARCGHC.Platform.S390XGHC.Platform.PPCGHC.Platform.NoRegsGHC.Platform.ARMGHC.Platform.AArch64GHC.Platform.Regs GHC.Cmm.NodeGHC.CmmGHCi.BreakArrayGHCi.FFIGHCi.RemoteTypesLanguage.Haskell.TH.Lib.MapLanguage.Haskell.TH.SyntaxLanguage.Haskell.TH.PprLibLanguage.Haskell.TH.Ppr Language.Haskell.TH.Lib.InternalLanguage.Haskell.TH.Lib GHC.Hs.UtilsGHC.Hs.InstancesGHC.HsGHC.Tc.Types.OriginGHC.Tc.Types.ConstraintGHC.Parser.PostProcess.HaddockGHC.Parser.PostProcess GHC.Hs.DumpGHC.Driver.Backpack.SyntaxGHCi.TH.Binary GHCi.MessageGHC.Runtime.Interpreter.TypesGHC.Runtime.Eval.TypesSizedSeqGHC.ByteCode.TypesGHC.Runtime.Linker.TypesGHC.Driver.Types GHC.ParserGHC.Parser.HeaderGHC.Driver.Pipeline.MonadGHC.Driver.MonadGHC.Core.Opt.Monad GHC.Core.MakeGHC.Core.SimpleOptGHC.Core.Opt.ConstantFold GHC.Core.Lint GhcExceptionSDocunsafeGlobalDynFlagsGHC initGhcMonad AnnKeywordIdAnnOpenAnnClose AnnHeaderAnnVal Data.ListunconsheadtailnullputIfaceTopBndrgetIfaceTopBndrAnnDeclAnnType AnnBackquoteAnnTildeMxGHC.Tc.Gen.Exportexports_from_avail Data.KindType ParsedModuleDynFlags Data.Voidabsurd AnnPattern AnnDotdotAnnComma AnnModule AnnImportAnnSafe AnnQualifiedAnnPackageNameAnnAs AnnHidingAnnSemi cc_flavourfunTyConCoreMap FileCleanupcleanCurrentModuleTempFilesFloatOutSwitchesGHC.Driver.Pipeline runPipelineGHC.Runtime.LoaderinitializePluginsrunGhcGHC.UnitId ModBreaksHsExprRdrNamesUniqueRdrName mkCoreApps mkCoreConApps mkIntExpr mkWordExpr mkCharExpr mkStringExpr mkFloatExpr mkDoubleExpr mkCoreLams mkCoreLets AnnDcolon AnnForallAnnDot AnnDarrow AnnDefaultAnnInfix AnnInstanceAnnVbarAnnEqual AnnLarrowAnnWhereGHC.Tc.Gen.Bind tcMonoBindsAnnFunIdAnnBangAnnAtAnnRole AnnForeign AnnExport AnnDerivingAnnStock AnnAnyClassApi AnnNewtypeAnnData AnnNewTypeAnnCLose AnnRarrow AnnFamilyAnnOpenP AnnClosePAnnClasscvBindsAndSigs NoExtField mkCoreLetGHC.Tc.Solver.Monad InsertSet&Language.Haskell.TH.LanguageExtensions pprPatSynType thisModuledynLanguage.Haskell.THaddModFinalizerAnnThenAnnByAnnGroupAnnUsingAnnLetAnnRec Annlarrowtail Annrarrowtail AnnLarrowtail AnnRarrowtailAnnOpenB AnnCloseBAnnLamAnnCaseAnnOfAnnIfAnnElseAnnInAnnDoAnnColonAnnMinusmkHsWrapAnnOpenE AnnOpenEQ AnnCloseQAnnProc AnnStaticprepareForeignCalltopSortModuleGraph flattenSCC GHC.Tc.Utils imp_dep_modsGHC.Runtime.Eval setContextloadGHC.Driver.Main HscNoRecomptcg_type_env_varTcGblEnv homeUnitIdGHC.Tc.Gen.ExprcheckClosedInStaticFormdecideGeneralisationPlanbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwise Debug.Tracetracemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=>>fmapreturnControl.Monad.FixmfixControl.Monad.Failfail fromIntegral realToFrac toInteger toRationalmemptymappendmconcat<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowMonadFix MonadFail Applicative Data.FoldableFoldableData.Traversable Traversable SemigroupMonoid GHC.TypesBoolCharDoubleFloatIntinteger-wired-inGHC.Integer.TypeInteger GHC.MaybeMaybeOrderingRationalIOWord Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGTGHC.Fingerprint.Type FingerprintGHC.ExtssortWith Data.Data mkNoRepTypeControl.Monad.IO.ClassliftIOMonadIO GHC.ByteOrder LittleEndian BigEndian ByteOrder Control.Monad mapAndUnzipM Data.Version versionTags versionBranchVersionsequencemapM sequenceAtraverseGHC.Fingerprint getFileHashfingerprintData fingerprint0readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharControl.Exception.Basetry GHC.Conc.SyncthrowToGHC.IO.ExceptionioError GHC.IORefIORefGHC.IOFilePath userErrorIOErrorGHC.Exception.TypedisplayException fromException toException ExceptionnotElemallanyorand concatMapconcat sequence_mapM_foldlMfoldrMproductsumminimummaximumelemlengthfoldl1foldr1foldl'foldlfoldrfoldMapData.Semigroup.InternalappEndoEndo Data.OldListunwordswordsunlineslines Text.ReadreadreadseitherfingerprintFingerprintsfingerprintStringlex readParenreadList readsPrecText.ParserCombinators.ReadPReadSatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixlcmgcd^^^oddevendivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsucc showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlfoldl1'initlast Data.Maybemaybe Data.Functor<$>uncurrycurrysubtractsignumabs*+asTypeOfuntil$!flip.constid=<<<$<*liftA2StringGHC.Err undefinederrorWithoutStackTraceerrorGHC.Stack.Types HasCallStackcompare<<=>maxmin/=&&||notcontainers-0.6.2.1 Data.Graph flattenSCCs CyclicSCC AcyclicSCCSCCtransformers-0.5.6.2Control.Monad.Trans.MaybeMaybeT runMaybeT expandTopDir expandPathVar getBaseDir ClosureTypeINVALID_OBJECTCONSTR CONSTR_1_0 CONSTR_0_1 CONSTR_2_0 CONSTR_1_1 CONSTR_0_2 CONSTR_NOCAFFUNFUN_1_0FUN_0_1FUN_2_0FUN_1_1FUN_0_2 FUN_STATICTHUNK THUNK_1_0 THUNK_0_1 THUNK_2_0 THUNK_1_1 THUNK_0_2 THUNK_STATICTHUNK_SELECTORBCOAPPAPAP_STACKIND IND_STATICRET_BCO RET_SMALLRET_BIGRET_FUN UPDATE_FRAME CATCH_FRAMEUNDERFLOW_FRAME STOP_FRAMEBLOCKING_QUEUE BLACKHOLE MVAR_CLEAN MVAR_DIRTYTVAR ARR_WORDSMUT_ARR_PTRS_CLEANMUT_ARR_PTRS_DIRTYMUT_ARR_PTRS_FROZEN_DIRTYMUT_ARR_PTRS_FROZEN_CLEAN MUT_VAR_CLEAN MUT_VAR_DIRTYWEAKPRIMMUT_PRIMTSOSTACK TREC_CHUNKATOMICALLY_FRAMECATCH_RETRY_FRAMECATCH_STM_FRAME WHITEHOLESMALL_MUT_ARR_PTRS_CLEANSMALL_MUT_ARR_PTRS_DIRTYSMALL_MUT_ARR_PTRS_FROZEN_DIRTYSMALL_MUT_ARR_PTRS_FROZEN_CLEANCOMPACT_NFDATAN_CLOSURE_TYPESclosureTypeHeaderSize$fEnumClosureType$fEqClosureType$fOrdClosureType$fShowClosureType$fGenericClosureType wORD_SIZEwORD_SIZE_IN_BITStAG_MASK StgInfoTableentryptrsnptrstipesrtlencode EntryFunPtrHalfWord ItblCodes$fShowStgInfoTable$fGenericStgInfoTablepeekItblpokeItblitblSizePrimTypePIntPWordPInt64PWord64PAddrPFloatPDouble GenClosure ConstrClosure FunClosure ThunkClosureSelectorClosure PAPClosure APClosureAPStackClosure IndClosure BCOClosureBlackholeClosureArrWordsClosure MutArrClosureSmallMutArrClosure MVarClosure IOPortClosure MutVarClosureBlockingQueueClosure WeakClosure IntClosure WordClosure Int64Closure Word64Closure AddrClosure FloatClosure DoubleClosure OtherClosureUnsupportedClosureinfoptrArgsdataArgspkgmodlnameselecteearityn_argsfunpayload indirecteeinstrsliteralsbcoptrssizebitmapbytesarrWordsmccPtrsmccSize mccPayload queueHead queueTailvaluevarlink blackHoleownerqueue cfinalizerskey finalizerptipeintValwordValint64Val word64ValaddrValfloatVal doubleValhvaluesrawWordsClosureBoxasBox areBoxesEqual allClosures closureSize $fShowBox$fShowGenClosure$fGenericGenClosure$fFunctorGenClosure$fFoldableGenClosure$fTraversableGenClosure $fEqPrimType$fShowPrimType$fGenericPrimType dataConNames HasHeapRepgetClosureDatagetBoxedClosureData$fHasHeapRepDoubleRepa$fHasHeapRepFloatRepa$fHasHeapRepAddrRepa$fHasHeapRepWord64Repa$fHasHeapRepInt64Repa$fHasHeapRepWordRepa$fHasHeapRepIntRepa$fHasHeapRepUnliftedRepa$fHasHeapRepLiftedRepaForeignSrcLangLangCLangCxxLangObjc LangObjcxxLangAsm RawObject$fEqForeignSrcLang$fShowForeignSrcLang$fGenericForeignSrcLang$fBinaryForeignSrcLang IfaceBndr IfaceCoercion IfaceTyLit IfaceTyCon IfaceType IfaceAppArgs ExtensionCppOverlappingInstancesUndecidableInstancesIncoherentInstancesUndecidableSuperClassesMonomorphismRestriction MonoPatBindsMonoLocalBindsRelaxedPolyRecExtendedDefaultRulesForeignFunctionInterfaceUnliftedFFITypesInterruptibleFFICApiFFIGHCForeignImportPrim JavaScriptFFIParallelArraysArrowsTemplateHaskellTemplateHaskellQuotes QualifiedDo QuasiQuotesImplicitParamsImplicitPreludeScopedTypeVariablesAllowAmbiguousTypes UnboxedTuples UnboxedSumsUnliftedNewtypes BangPatterns TypeFamiliesTypeFamilyDependencies TypeInTypeOverloadedStringsOverloadedLists NumDecimalsDisambiguateRecordFieldsRecordWildCards RecordPuns ViewPatternsGADTs GADTSyntaxNPlusKPatternsDoAndIfThenElseBlockArgumentsRebindableSyntaxConstraintKinds PolyKinds DataKinds InstanceSigs ApplicativeDo LinearTypesStandaloneDerivingDeriveDataTypeableAutoDeriveTypeable DeriveFunctorDeriveTraversableDeriveFoldable DeriveGenericDefaultSignaturesDeriveAnyClass DeriveLiftDerivingStrategies DerivingViaTypeSynonymInstancesFlexibleContextsFlexibleInstancesConstrainedClassMethodsMultiParamTypeClassesNullaryTypeClassesFunctionalDependencies UnicodeSyntaxExistentialQuantification MagicHashEmptyDataDeclsKindSignaturesRoleAnnotationsParallelListCompTransformListCompMonadComprehensionsGeneralizedNewtypeDeriving RecursiveDoPostfixOperators TupleSections PatternGuardsLiberalTypeSynonyms RankNTypesImpredicativeTypes TypeOperatorsExplicitNamespacesPackageImportsExplicitForAllAlternativeLayoutRule!AlternativeLayoutRuleTransitionalDatatypeContextsNondecreasingIndentation RelaxedLayoutTraditionalRecordSyntax LambdaCase MultiWayIfBinaryLiteralsNegativeLiteralsHexFloatLiteralsDuplicateRecordFieldsOverloadedLabels EmptyCasePatternSynonymsPartialTypeSignaturesNamedWildCardsStaticPointersTypeApplicationsStrict StrictDataMonadFailDesugaringEmptyDataDerivingNumericUnderscoresQuantifiedConstraints StarIsTypeImportQualifiedPostCUSKsStandaloneKindSignaturesLexicalNegation$fOrdExtension $fEqExtension$fEnumExtension$fShowExtension$fGenericExtension$fBoundedExtension$fBinaryExtension okSymChar startsVarSym startsConSym startsVarId startsConIdstartsVarSymASCII isVarSymChar BmiVersionBMI1BMI2 SseVersionSSE1SSE2SSE3SSE4SSE42 PlatformMisc!platformMisc_targetPlatformStringplatformMisc_ghcWithInterpreterplatformMisc_ghcWithSMPplatformMisc_ghcRTSWaysplatformMisc_libFFIplatformMisc_ghcThreadedplatformMisc_ghcDebuggedplatformMisc_ghcRtsWithLibdwplatformMisc_llvmTarget PPC_64ABIELF_V1ELF_V2ArmABISOFTSOFTFPHARD ArmISAExtVFPv2VFPv3VFPv3D16NEONIWMMX2ArmISAARMv5ARMv6ARMv7OS OSUnknownOSLinuxOSDarwin OSSolaris2 OSMinGW32 OSFreeBSD OSDragonFly OSOpenBSDOSNetBSD OSKFreeBSDOSHaikuOSQNXNTOOSAIXOSHurdArch ArchUnknownArchX86 ArchX86_64ArchPPC ArchPPC_64 ArchS390X ArchSPARC ArchSPARC64ArchARM ArchAArch64 ArchAlpha ArchMipseb ArchMipselArchJavaScript ppc_64ABIarmISA armISAExtarmABIPlatformWordSizePW4PW8Platform platformMiniplatformWordSizeplatformByteOrderplatformUnregisterisedplatformHasGnuNonexecStackplatformHasIdentDirective platformHasSubsectionsViaSymbolsplatformIsCrossCompilingplatformLeadingUnderscoreplatformTablesNextToCode PlatformMiniplatformMini_archplatformMini_osplatformWordSizeInBytesplatformWordSizeInBits platformArch platformOSstringEncodeArchisARMstringEncodeOS target32Bit osElfTarget osMachOTargetplatformUsesFrameworksosSubsectionsViaSymbolsplatformMinIntplatformMaxIntplatformMaxWordplatformInIntRangeplatformInWordRangeplatformCConvNeedsExtension$fReadPlatformWordSize$fShowPlatformWordSize$fEqBmiVersion$fOrdBmiVersion$fEqSseVersion$fOrdSseVersion$fReadPlatform$fShowPlatform $fEqPlatform$fReadPlatformMini$fShowPlatformMini$fEqPlatformMini $fReadArch $fShowArch$fEqArch$fReadPPC_64ABI$fShowPPC_64ABI $fEqPPC_64ABI $fReadArmABI $fShowArmABI $fEqArmABI$fReadArmISAExt$fShowArmISAExt $fEqArmISAExt $fReadArmISA $fShowArmISA $fEqArmISA$fReadOS$fShowOS$fEqOS$fEqPlatformWordSize StaticPlugin LoadedPluginPluginHooks emptyHooksBackendNCGLLVMViaC InterpreterplatformDefaultBackendplatformNcgSupported $fEqBackend $fOrdBackend $fShowBackend $fReadBackendStream runStreamyieldcollectcollect_consumefromList mapAccumL mapAccumL_ $fMonadStream$fApplicativeStream$fFunctorStream insertListinsertListWith deleteList foldRightfoldRightWithKey FastMutPtr FastMutInt newFastMutIntreadFastMutIntwriteFastMutInt newFastMutPtrreadFastMutPtrwriteFastMutPtrEnumSetmemberinsertdeletetoListempty UniqueMap UniqueSetIsMapKeyOfmapNullmapSize mapMember mapLookupmapFindWithDefaultmapEmpty mapSingleton mapInsert mapInsertWith mapDeletemapAlter mapAdjustmapUnionmapUnionWithKey mapDifferencemapIntersection mapIsSubmapOfmapMap mapMapWithKeymapFoldlmapFoldrmapFoldlWithKeymapFoldMapWithKey mapFiltermapFilterWithKeymapElemsmapKeys mapToList mapFromListmapFromListWithIsSetElemOfsetNullsetSize setMembersetEmpty setSingleton setInsert setDeletesetUnion setDifferencesetIntersection setIsSubsetOf setFiltersetFoldlsetFoldrsetElems setFromList setInsertList setDeleteList setUnions mapInsertList mapDeleteList mapUnions$fIsSetUniqueSet$fIsMapUniqueMap $fEqUniqueMap$fOrdUniqueMap$fShowUniqueMap$fFunctorUniqueMap$fFoldableUniqueMap$fTraversableUniqueMap $fEqUniqueSet$fOrdUniqueSet$fShowUniqueSet$fSemigroupUniqueSet$fMonoidUniqueSetBlockBlockCOBlockCCBlockOCBNilBMiddleBCatBSnocBConsMaybeOJustONothingO IndexedCOCO ExtensibilityOpenClosed isEmptyBlock emptyBlock blockCons blockSnoc blockJoinHead blockJoinTail blockJoin blockAppend firstNodelastNodeblockSplitHeadblockSplitTail blockSplit blockToList blockFromListreplaceFirstNodereplaceLastNodemapBlock mapBlock' mapBlock3'foldBlockNodesFfoldBlockNodesB3foldBlockNodesB$fFunctorMaybeOPrimOp Serialized toSerializedfromSerializedserializeWithDatadeserializeWithDatastderrSupportsAnsiColors HoleFitPluginNameOccNameTyVarVar AnonArgFlagArgFlag DbOpenModeDbOpenReadOnlyDbOpenReadWriteDbMode DbReadOnly DbReadWrite PackageDbLock DbInstUnitIdDbUnitIdDbModule DbModuleVardbModuleUnitId dbModuleNamedbModuleVarNameGenericUnitInfounitIdunitInstanceOfunitInstantiations unitPackageIdunitPackageNameunitPackageVersionunitComponentName unitAbiHash unitDependsunitAbiDependsunitImportDirs unitLibrariesunitExtDepLibsSysunitExtDepLibsGhcunitLibraryDirsunitLibraryDynDirsunitExtDepFrameworksunitExtDepFrameworkDirsunitLinkerOptions unitCcOptions unitIncludesunitIncludeDirsunitHaddockInterfacesunitHaddockHTMLsunitExposedModulesunitHiddenModulesunitIsIndefinite unitIsExposed unitIsTrusted DbUnitInfomapGenericUnitInfo lockPackageDbunlockPackageDbisDbOpenReadModereadPackageDbForGhcreadPackageDbForGhcPkgwritePackageDbmkMungePathUrlmungeUnitInfoPaths$fBinaryDbInstUnitId$fBinaryDbModule$fBinaryGenericUnitInfo$fEqDbInstUnitId$fShowDbInstUnitId $fEqDbModule$fShowDbModule$fEqGenericUnitInfo$fShowGenericUnitInfo$fTraversableDbOpenMode$fFoldableDbOpenMode$fFunctorDbOpenMode ModuleNameOption FileOptionshowOpt $fEqOptionutf8DecodeCharAddr#utf8DecodeChar utf8PrevChar utf8CharStartutf8DecodeByteStringutf8DecodeStringLazyutf8DecodeShortByteStringcountUTF8Charsutf8EncodeCharutf8EncodeStringutf8EncodeShortByteStringutf8EncodedLength zEncodeString zDecodeStringtoBase62PaddedtoBase62ExceptionMonadcatchIOhandleIOtryIOreadHexFingerprintfingerprintByteStringPlatformConstantspc_CONTROL_GROUP_CONST_291pc_STD_HDR_SIZEpc_PROF_HDR_SIZE pc_BLOCK_SIZEpc_BLOCKS_PER_MBLOCKpc_TICKY_BIN_COUNTpc_OFFSET_StgRegTable_rR1pc_OFFSET_StgRegTable_rR2pc_OFFSET_StgRegTable_rR3pc_OFFSET_StgRegTable_rR4pc_OFFSET_StgRegTable_rR5pc_OFFSET_StgRegTable_rR6pc_OFFSET_StgRegTable_rR7pc_OFFSET_StgRegTable_rR8pc_OFFSET_StgRegTable_rR9pc_OFFSET_StgRegTable_rR10pc_OFFSET_StgRegTable_rF1pc_OFFSET_StgRegTable_rF2pc_OFFSET_StgRegTable_rF3pc_OFFSET_StgRegTable_rF4pc_OFFSET_StgRegTable_rF5pc_OFFSET_StgRegTable_rF6pc_OFFSET_StgRegTable_rD1pc_OFFSET_StgRegTable_rD2pc_OFFSET_StgRegTable_rD3pc_OFFSET_StgRegTable_rD4pc_OFFSET_StgRegTable_rD5pc_OFFSET_StgRegTable_rD6pc_OFFSET_StgRegTable_rXMM1pc_OFFSET_StgRegTable_rXMM2pc_OFFSET_StgRegTable_rXMM3pc_OFFSET_StgRegTable_rXMM4pc_OFFSET_StgRegTable_rXMM5pc_OFFSET_StgRegTable_rXMM6pc_OFFSET_StgRegTable_rYMM1pc_OFFSET_StgRegTable_rYMM2pc_OFFSET_StgRegTable_rYMM3pc_OFFSET_StgRegTable_rYMM4pc_OFFSET_StgRegTable_rYMM5pc_OFFSET_StgRegTable_rYMM6pc_OFFSET_StgRegTable_rZMM1pc_OFFSET_StgRegTable_rZMM2pc_OFFSET_StgRegTable_rZMM3pc_OFFSET_StgRegTable_rZMM4pc_OFFSET_StgRegTable_rZMM5pc_OFFSET_StgRegTable_rZMM6pc_OFFSET_StgRegTable_rL1pc_OFFSET_StgRegTable_rSppc_OFFSET_StgRegTable_rSpLimpc_OFFSET_StgRegTable_rHppc_OFFSET_StgRegTable_rHpLimpc_OFFSET_StgRegTable_rCCCS!pc_OFFSET_StgRegTable_rCurrentTSO%pc_OFFSET_StgRegTable_rCurrentNurserypc_OFFSET_StgRegTable_rHpAllocpc_OFFSET_stgEagerBlackholeInfopc_OFFSET_stgGCEnter1pc_OFFSET_stgGCFunpc_OFFSET_Capability_rpc_OFFSET_bdescr_startpc_OFFSET_bdescr_freepc_OFFSET_bdescr_blockspc_OFFSET_bdescr_flagspc_SIZEOF_CostCentreStack#pc_OFFSET_CostCentreStack_mem_alloc pc_REP_CostCentreStack_mem_alloc#pc_OFFSET_CostCentreStack_scc_count pc_REP_CostCentreStack_scc_countpc_OFFSET_StgHeader_ccspc_OFFSET_StgHeader_ldvwpc_SIZEOF_StgSMPThunkHeaderpc_OFFSET_StgEntCounter_allocspc_REP_StgEntCounter_allocspc_OFFSET_StgEntCounter_allocdpc_REP_StgEntCounter_allocd#pc_OFFSET_StgEntCounter_registeredppc_OFFSET_StgEntCounter_link#pc_OFFSET_StgEntCounter_entry_countpc_SIZEOF_StgUpdateFrame_NoHdrpc_SIZEOF_StgMutArrPtrs_NoHdrpc_OFFSET_StgMutArrPtrs_ptrspc_OFFSET_StgMutArrPtrs_size"pc_SIZEOF_StgSmallMutArrPtrs_NoHdr!pc_OFFSET_StgSmallMutArrPtrs_ptrspc_SIZEOF_StgArrBytes_NoHdrpc_OFFSET_StgArrBytes_bytespc_OFFSET_StgTSO_alloc_limitpc_OFFSET_StgTSO_cccspc_OFFSET_StgTSO_stackobjpc_OFFSET_StgStack_sppc_OFFSET_StgStack_stack pc_OFFSET_StgUpdateFrame_updatee"pc_OFFSET_StgFunInfoExtraFwd_aritypc_REP_StgFunInfoExtraFwd_aritypc_SIZEOF_StgFunInfoExtraRev"pc_OFFSET_StgFunInfoExtraRev_aritypc_REP_StgFunInfoExtraRev_aritypc_MAX_SPEC_SELECTEE_SIZEpc_MAX_SPEC_AP_SIZEpc_MIN_PAYLOAD_SIZEpc_MIN_INTLIKEpc_MAX_INTLIKEpc_MIN_CHARLIKEpc_MAX_CHARLIKEpc_MUT_ARR_PTRS_CARD_BITSpc_MAX_Vanilla_REGpc_MAX_Float_REGpc_MAX_Double_REGpc_MAX_Long_REGpc_MAX_XMM_REGpc_MAX_Real_Vanilla_REGpc_MAX_Real_Float_REGpc_MAX_Real_Double_REGpc_MAX_Real_XMM_REGpc_MAX_Real_Long_REGpc_RESERVED_C_STACK_BYTESpc_RESERVED_STACK_WORDSpc_AP_STACK_SPLIM pc_WORD_SIZE pc_CINT_SIZE pc_CLONG_SIZEpc_CLONG_LONG_SIZEpc_BITMAP_BITS_SHIFT pc_TAG_BITSpc_DYNAMIC_BY_DEFAULT pc_LDV_SHIFTpc_ILDV_CREATE_MASKpc_ILDV_STATE_CREATEpc_ILDV_STATE_USEGhcNameVersionghcNameVersion_programNameghcNameVersion_projectVersion FileSettingsfileSettings_ghcUsagePathfileSettings_ghciUsagePathfileSettings_toolDirfileSettings_topDirfileSettings_tmpDir"fileSettings_globalPackageDatabase ToolSettings$toolSettings_ldSupportsCompactUnwindtoolSettings_ldSupportsBuildIdtoolSettings_ldSupportsFilelisttoolSettings_ldIsGnuLdtoolSettings_ccSupportsNoPietoolSettings_pgm_LtoolSettings_pgm_PtoolSettings_pgm_FtoolSettings_pgm_ctoolSettings_pgm_atoolSettings_pgm_ltoolSettings_pgm_lmtoolSettings_pgm_dlltoolSettings_pgm_TtoolSettings_pgm_windrestoolSettings_pgm_libtooltoolSettings_pgm_artoolSettings_pgm_otool"toolSettings_pgm_install_name_tooltoolSettings_pgm_ranlibtoolSettings_pgm_lotoolSettings_pgm_lctoolSettings_pgm_lcctoolSettings_pgm_itoolSettings_opt_LtoolSettings_opt_PtoolSettings_opt_P_fingerprinttoolSettings_opt_FtoolSettings_opt_ctoolSettings_opt_cxxtoolSettings_opt_atoolSettings_opt_ltoolSettings_opt_lmtoolSettings_opt_windrestoolSettings_opt_lotoolSettings_opt_lctoolSettings_opt_lcctoolSettings_opt_itoolSettings_extraGccViaCFlagsSettingssGhcNameVersion sFileSettingssTargetPlatform sToolSettings sPlatformMiscsPlatformConstants sRawSettings sProgramNamesProjectVersion sGhcUsagePathsGhciUsagePathsToolDirsTopDirsTmpDirsGlobalPackageDatabasePathsLdSupportsCompactUnwindsLdSupportsBuildIdsLdSupportsFilelist sLdIsGnuLdsGccSupportsNoPiesPgm_LsPgm_PsPgm_FsPgm_csPgm_asPgm_lsPgm_lmsPgm_dllsPgm_T sPgm_windres sPgm_libtoolsPgm_ar sPgm_otoolsPgm_install_name_tool sPgm_ranlibsPgm_losPgm_lcsPgm_lccsPgm_isOpt_LsOpt_PsOpt_P_fingerprintsOpt_FsOpt_csOpt_cxxsOpt_asOpt_lsOpt_lm sOpt_windressOpt_losOpt_lcsOpt_lccsOpt_isExtraGccViaCFlagssTargetPlatformStringsGhcWithInterpreter sGhcWithSMP sGhcRTSWayssLibFFI sGhcThreaded sGhcDebuggedsGhcRtsWithLibdw$fReadPlatformConstantsinlinePerformIO zipWith3M zipWith3M_ zipWith4MzipWithAndUnzipM mapAndUnzip3M mapAndUnzip4M mapAndUnzip5M mapAccumLMmapSndM concatMapM mapMaybeM fmapMaybeM fmapEitherManyMallMorMfoldlM_ maybeMapMwhenMunlessM filterOutM SDocContextPprStyletext warnPprTraceshowSDocUnsafe IndefUnitIdUnitModule IndefiniteGenUnit GenModuleUnitId pprModule moduleUnit moduleNamecProjectGitCommitIdcProjectVersioncProjectVersionIntcProjectPatchLevelcProjectPatchLevel1cProjectPatchLevel2 uniqueSubdircBuildPlatformStringcHostPlatformString cProjectNamecBooterVersioncStagePlainGhcException PlainSignalPlainUsageErrorPlainCmdLineError PlainPanic PlainSorryPlainInstallationErrorPlainProgramErrorprogNameshowPlainGhcExceptionpanicsorrypgmError cmdLineErrorcmdLineErrorIO assertPanic$fShowPlainGhcException$fExceptionPlainGhcExceptionSignal UsageError CmdLineErrorPanicPprPanicSorryPprSorryInstallationError ProgramErrorPprProgramError showExceptionsafeShowExceptionshowGhcExceptionthrowGhcExceptionthrowGhcExceptionIOhandleGhcExceptionpanicDocsorryDoc pgmErrorDoctryMostwithSignalHandlers$fShowGhcException$fExceptionGhcException expandToolDir findTopDir tryFindTopDir findToolDiris_ident is_symbolis_anyis_spaceis_loweris_upperis_digit is_alphanumhexDigit octDecDigit is_decdigit is_hexdigit is_octdigit is_bindigitOverridingBoolAutoAlwaysNeverHasDebugCallStack DirectionForwards BackwardsSuffix ghciSupported debugIsOn isWindowsHost isDarwinHost applyWhennTimesfstOf3sndOf3thdOf3fst3snd3third3uncurry3liftFstliftSndfirstMfirst3MsecondM filterOut partitionWith chkAppendzipEqual zipWithEqual zipWith3Equal zipWith4EqualzipLazy zipWithLazy zipWith3Lazy filterByList filterByListspartitionByListstretchZipWithmapFstmapSnd mapAndUnzip mapAndUnzip3zipWithAndUnzip zipAndUnzipatLength lengthExceeds lengthAtLeastlengthIs lengthIsNot lengthAtMostlengthLessThan listLengthCmp equalLength compareLengthleLengthltLength singleton isSingletonnotNullonlyisInisn'tIn chunkList changeLastmapLastM whenNonEmpty mergeListsBy isSortedByminWithnubSortordNubtransitiveClosurefoldl2all2count countWhiletakeListdropList splitAtListdropTaildropWhileEndLEspanEndlast2 lastMaybesnocViewsplit capitaliseisEqualthenCmpeqListBy eqMaybeBycmpList removeSpaces<&&><||> fuzzyMatch fuzzyLookup unzipWithseqList strictMapglobal consIORefglobalM sharedGlobal sharedGlobalMlooksLikeModuleNamelooksLikePackageNamegetCmd toCmdArgstoArgs exactLog2 readRationalreadHexRationaldoesDirNameExistgetModificationUTCTimemodificationTimeIfExistswithAtomicRenamesplitLongestPrefix escapeSpacesreslashmakeRelativeToabstractConstrabstractDataTypecharToC hashString overrideWith$fShowOverridingBoolSchemesHeadersMessagesWarningsErrorsFatalsMargin PprColour renderColourrenderColourAfresh colCustomcolResetcolBold colBlackFgcolRedFg colGreenFg colYellowFg colBlueFg colMagentaFg colCyanFg colWhiteFg defaultScheme parseScheme$fMonoidPprColour$fSemigroupPprColourMaybeErr SucceededFailed firstJust firstJusts expectJust whenIsJustorElse rightToMaybe liftMaybeT tryMaybeT isSuccessfailME$fMonadMaybeErr$fApplicativeMaybeErr$fFunctorMaybeErr PtrString FastStringuniqn_charsfs_sbsfs_zenc FastZStringbytesFSfastStringToByteStringfastStringToShortByteStringfastZStringToByteStringunsafeMkByteStringhPutFZSzString lengthFZS mkFastString#mkFastStringBytesmkFastStringByteStringmkFastStringShortByteString mkFastStringmkFastStringByteListlengthFSnullFSunpackFS zEncodeFSappendFSconcatFSheadFSconsFS uniqueOfFSnilFSisUnderscoreFSgetFastStringTablegetFastStringZEncCounterhPutFS mkPtrString# mkPtrStringunpackPtrStringlengthPSsLitfsLit$fNFDataFastString$fDataFastString$fShowFastString$fMonoidFastString$fSemigroupFastString$fIsStringFastString$fOrdFastString$fEqFastString$fNFDataFastZStringisLexConisLexVarisLexIdisLexSym isLexConId isLexVarId isLexConSym isLexVarSymokVarOccokConOccokTcOcc okVarIdOcc okVarSymOcc okConIdOcc okConSymOcc BufHandle newBufHandlebPutCharbPutStrbPutFSbPutFZS bPutPtrString bPutReplicatebFlushModePageMode ZigZagModeLeftMode OneLineModeStylemode lineLengthribbonsPerLine TextDetailsChrStrPStrZStrLStrRStrDoccharftextptextztext sizedText zeroWidthTextisEmptysemicommacolonspaceequalslparenrparenlbrackrbracklbracerbraceintintegerfloatdoublerationalhexquotesquote doubleQuotesparensbracketsbraces maybeParenshcathsepvcatnesthang hangNotEmpty punctuate$$$+$<><+>sepcatfcatfsepstyle renderStyle txtPrinter fullRenderprintDoc printDoc_ bufLeftRender $fShowDoc UnitDatabase UnitStateupdateIndefUnitId displayUnitId mkIndefUnitIdemptyUnitStateinitSDocContexthasNoDebugOutput hasPprDebug unitStatetargetPlatformOutputableBndrpprBndr pprPrefixOcc pprInfixOccbndrIsJoin_maybe BindingSite LambdaBindCaseBind CasePatBindLetBind OutputablepprpprPrecSDC sdocStyle sdocColSchemesdocLastColoursdocShouldUseColorsdocDefaultDepthsdocLineLengthsdocCanUseUnicodesdocHexWordLiterals sdocPprDebugsdocPrintUnicodeSyntaxsdocPrintCaseAsLetsdocPrintTypecheckerElaborationsdocPrintAxiomIncompssdocPrintExplicitKindssdocPrintExplicitCoercionssdocPrintExplicitRuntimeRepssdocPrintExplicitForallssdocPrintPotentialInstancessdocPrintEqualityRelationssdocSuppressTickssdocSuppressTypeSignaturessdocSuppressTypeApplicationssdocSuppressIdInfosdocSuppressCoercionssdocSuppressUnfoldingssdocSuppressVarKindssdocSuppressUniquessdocSuppressModulePrefixessdocSuppressStgExtssdocErrorSpanssdocStarIsTypesdocLinearTypessdocImpredicativeTypessdocPrintTypeAbbreviations sdocDynFlagsrunSDoc QualifyName NameUnqualNameQualNameNotInScope1NameNotInScope2QueryQualifyPackageQueryQualifyModuleQueryQualifyNamePrintUnqualified QueryQualifyqueryQualifyNamequeryQualifyModulequeryQualifyPackageDepth AllTheWayPartWay DefaultDepth CodeStyleCStyleAsmStylePprUserPprDumpPprCodereallyAlwaysQualifyNamesalwaysQualifyNamesneverQualifyNamesalwaysQualifyModulesneverQualifyModulesalwaysQualifyPackagesneverQualifyPackagesreallyAlwaysQualify alwaysQualify neverQualifydefaultUserStyledefaultDumpStyle mkDumpStyledefaultErrStyle mkErrStylecmdlineParserStyle mkUserStyle withUserStyle withErrStylesetStyleColoured withPprStyle pprDeeper pprDeeperList pprSetDepth getPprStylesdocWithDynFlagssdocWithContext sdocOptionupdSDocContextqualName qualModule qualPackage queryQual codeStyleasmStyle dumpStyle userStyle getPprDebug ifPprDebug whenPprDebug printSDoc printSDocLn printForUser printForCbufLeftRenderSDocpprCode mkCodeStyleshowSDocshowPprshowSDocUnqualshowSDocForUser showSDocDump showSDocDebugrenderWithStyleshowSDocOneLineshowSDocDumpOneLine docToSDocword doublePrec angleBracketscparen blankLinedcolonarrowlollipoplarrowdarrowarrowtlarrowtarrowttlarrowtt underscoredotvbarmulArrow forAllLitbullet unicodeSyntaxppWhenppUnless ppWhenOptionppUnlessOptioncolouredkeyword pprHsChar pprHsString pprHsBytesprimCharSuffixprimFloatSuffix primIntSuffixprimDoubleSuffixprimWordSuffixprimInt64SuffixprimWord64Suffix pprPrimChar pprPrimInt pprPrimWord pprPrimInt64 pprPrimWord64 pprPrefixVar pprInfixVarpprFastFilePathpprFilePathString pprWithCommas pprWithBars interppSP interpp'SP pprQuotedListquotedListWithOrquotedListWithNor intWithCommasspeakNthspeakNspeakNOfpluralisOrAredoOrDoes itsOrTheir callStackDocpprPanicpprSorry pprPgmError pprTraceDebugpprTracepprTraceWithFlags pprTraceM pprTraceWith pprTraceItpprTraceException pprSTraceassertPprPanicpprDebugAndThen$fIsStringSDoc$fOutputableExtension$fOutputableSerialized$fOutputableSCC$fOutputableFingerprint$fOutputableIntMap$fOutputableMap$fOutputableFastString$fOutputable(,,,,,,)$fOutputable(,,,,,)$fOutputable(,,,,)$fOutputable(,,,)$fOutputable(,,)$fOutputableEither$fOutputableMaybe$fOutputable(,)$fOutputableSet$fOutputableNonEmpty$fOutputable[]$fOutputable()$fOutputableDouble$fOutputableFloat$fOutputableWord$fOutputableWord64$fOutputableWord32$fOutputableWord16$fOutputableInteger$fOutputableInt$fOutputableInt64$fOutputableInt32$fOutputableOrdering$fOutputableBool$fOutputableChar$fOutputableSDoc$fOutputablePprStyle$fOutputableQualifyNameToJsonjsonJsonDocJSNullJSBoolJSIntJSStringJSArrayJSObject renderJSONescapeJsonString UnitPprInfounitPprPackageNameunitPprPackageVersionunitPprComponentName$fOutputableUnitPprInfo IdDetailsIdInfo pprIdDetailsisCoVarDetails coVarDetails vanillaIdInfoTcTyVarDetails MetaDetailsvanillaSkolemTvpprTcTyVarDetailsLanguage Haskell98 Haskell2010 WarnReasonNoReasonReason ErrReason WarningFlagOpt_WarnDuplicateExportsOpt_WarnDuplicateConstraintsOpt_WarnRedundantConstraintsOpt_WarnHiShadowsOpt_WarnImplicitPreludeOpt_WarnIncompletePatternsOpt_WarnIncompleteUniPatterns Opt_WarnIncompletePatternsRecUpdOpt_WarnOverflowedLiteralsOpt_WarnEmptyEnumerationsOpt_WarnMissingFieldsOpt_WarnMissingImportListOpt_WarnMissingMethodsOpt_WarnMissingSignaturesOpt_WarnMissingLocalSignaturesOpt_WarnNameShadowingOpt_WarnOverlappingPatternsOpt_WarnTypeDefaultsOpt_WarnMonomorphismOpt_WarnUnusedTopBindsOpt_WarnUnusedLocalBindsOpt_WarnUnusedPatternBindsOpt_WarnUnusedImportsOpt_WarnUnusedMatchesOpt_WarnUnusedTypePatternsOpt_WarnUnusedForallsOpt_WarnUnusedRecordWildcards Opt_WarnRedundantRecordWildcardsOpt_WarnWarningsDeprecationsOpt_WarnDeprecatedFlags!Opt_WarnMissingMonadFailInstancesOpt_WarnSemigroupOpt_WarnDodgyExportsOpt_WarnDodgyImportsOpt_WarnOrphansOpt_WarnAutoOrphansOpt_WarnIdentities Opt_WarnTabsOpt_WarnUnrecognisedPragmasOpt_WarnDodgyForeignImportsOpt_WarnUnusedDoBindOpt_WarnWrongDoBind)Opt_WarnAlternativeLayoutRuleTransitionalOpt_WarnUnsafe Opt_WarnSafeOpt_WarnTrustworthySafeOpt_WarnMissedSpecsOpt_WarnAllMissedSpecs%Opt_WarnUnsupportedCallingConventionsOpt_WarnUnsupportedLlvmVersionOpt_WarnMissedExtraSharedLibOpt_WarnInlineRuleShadowingOpt_WarnTypedHolesOpt_WarnPartialTypeSignatures!Opt_WarnMissingExportedSignatures$Opt_WarnUntickedPromotedConstructorsOpt_WarnDerivingTypeableOpt_WarnDeferredTypeErrors#Opt_WarnDeferredOutOfScopeVariables"Opt_WarnNonCanonicalMonadInstances&Opt_WarnNonCanonicalMonadFailInstances#Opt_WarnNonCanonicalMonoidInstances'Opt_WarnMissingPatternSynonymSignatures Opt_WarnUnrecognisedWarningFlags$Opt_WarnSimplifiableClassConstraintsOpt_WarnCPPUndefOpt_WarnUnbangedStrictPatternsOpt_WarnMissingHomeModulesOpt_WarnPartialFieldsOpt_WarnMissingExportListOpt_WarnInaccessibleCodeOpt_WarnStarIsTypeOpt_WarnStarBinderOpt_WarnImplicitKindVarsOpt_WarnSpaceAfterBang!Opt_WarnMissingDerivingStrategies"Opt_WarnPrepositiveQualifiedModuleOpt_WarnUnusedPackagesOpt_WarnInferredSafeImportsOpt_WarnMissingSafeHaskellMode Opt_WarnCompatUnqualifiedImportsOpt_WarnDerivingDefaultsOpt_WarnInvalidHaddock GeneralFlagOpt_DumpToFileOpt_D_faststring_statsOpt_D_dump_minimal_importsOpt_DoCoreLintingOpt_DoLinearCoreLintingOpt_DoStgLintingOpt_DoCmmLintingOpt_DoAsmLintingOpt_DoAnnotationLintingOpt_NoLlvmMangler Opt_FastLlvmOpt_NoTypeableBindsOpt_WarnIsErrorOpt_ShowWarnGroupsOpt_HideSourcePathsOpt_PrintExplicitForallsOpt_PrintExplicitKindsOpt_PrintExplicitCoercionsOpt_PrintExplicitRuntimeRepsOpt_PrintEqualityRelationsOpt_PrintAxiomIncompsOpt_PrintUnicodeSyntaxOpt_PrintExpandedSynonymsOpt_PrintPotentialInstancesOpt_PrintTypecheckerElaboration Opt_CallArityOpt_ExitificationOpt_StrictnessOpt_LateDmdAnalOpt_KillAbsenceOpt_KillOneShotOpt_FullLaziness Opt_FloatInOpt_LateSpecialiseOpt_SpecialiseOpt_SpecialiseAggressivelyOpt_CrossModuleSpecialise Opt_StaticArgumentTransformationOpt_CSE Opt_StgCSEOpt_StgLiftLamsOpt_LiberateCaseOpt_SpecConstrOpt_SpecConstrKeenOpt_DoLambdaEtaExpansionOpt_IgnoreAssertsOpt_DoEtaReduction Opt_CaseMergeOpt_CaseFoldingOpt_UnboxStrictFieldsOpt_UnboxSmallStrictFieldsOpt_DictsCheapOpt_EnableRewriteRulesOpt_EnableThSpliceWarnings Opt_RegsGraphOpt_RegsIterativeOpt_PedanticBottoms Opt_LlvmTBAAOpt_LlvmFillUndefWithGarbageOpt_IrrefutableTuples Opt_CmmSinkOpt_CmmStaticPredOpt_CmmElimCommonBlocksOpt_AsmShortcuttingOpt_OmitYieldsOpt_FunToThunkOpt_DictsStrictOpt_DmdTxDictSelOpt_LoopificationOpt_CfgBlocklayoutOpt_WeightlessBlocklayout Opt_CprAnalOpt_WorkerWrapperOpt_SolveConstantDictsOpt_AlignmentSanitisationOpt_CatchBottomsOpt_NumConstantFoldingOpt_SimplPreInliningOpt_IgnoreInterfacePragmasOpt_OmitInterfacePragmasOpt_ExposeAllUnfoldingsOpt_WriteInterface Opt_WriteHieOpt_AutoSccsOnIndividualCafsOpt_ProfCountEntriesOpt_PpOpt_ForceRecompOpt_IgnoreOptimChangesOpt_IgnoreHpcChangesOpt_ExcessPrecisionOpt_EagerBlackHoling Opt_NoHsMainOpt_SplitSections Opt_StgStatsOpt_HideAllPackagesOpt_HideAllPluginPackagesOpt_PrintBindResult Opt_HaddockOpt_HaddockOptionsOpt_BreakOnExceptionOpt_BreakOnErrorOpt_PrintEvldWithShowOpt_PrintBindContentsOpt_GenManifestOpt_EmbedManifestOpt_SharedImplibOpt_BuildingCabalPackageOpt_IgnoreDotGhciOpt_GhciSandboxOpt_GhciHistoryOpt_GhciLeakCheckOpt_ValidateHieOpt_LocalGhciHistoryOpt_NoItOpt_HelpfulErrorsOpt_DeferTypeErrorsOpt_DeferTypedHolesOpt_DeferOutOfScopeVariablesOpt_PICOpt_PIEOpt_PICExecutableOpt_ExternalDynamicRefs Opt_TickyOpt_Ticky_Allocd Opt_Ticky_LNEOpt_Ticky_Dyn_Thunk Opt_RPathOpt_RelativeDynlibPathsOpt_Hpc Opt_FlatCacheOpt_ExternalInterpreterOpt_OptimalApplicativeDoOpt_VersionMacrosOpt_WholeArchiveHsLibsOpt_SingleLibFolder Opt_KeepCAFs Opt_KeepGoingOpt_ByteCodeIfUnboxed Opt_LinkRtsOpt_ErrorSpansOpt_DeferDiagnosticsOpt_DiagnosticsShowCaretOpt_PprCaseAsLetOpt_PprShowTicksOpt_ShowHoleConstraintsOpt_ShowValidHoleFitsOpt_SortValidHoleFitsOpt_SortBySizeHoleFitsOpt_SortBySubsumHoleFitsOpt_AbstractRefHoleFitsOpt_UnclutterValidHoleFitsOpt_ShowTypeAppOfHoleFitsOpt_ShowTypeAppVarsOfHoleFitsOpt_ShowDocsOfHoleFitsOpt_ShowTypeOfHoleFitsOpt_ShowProvOfHoleFitsOpt_ShowMatchesOfHoleFitsOpt_ShowLoadedModulesOpt_HexWordLiteralsOpt_SuppressCoercionsOpt_SuppressVarKindsOpt_SuppressModulePrefixesOpt_SuppressTypeApplicationsOpt_SuppressIdInfoOpt_SuppressUnfoldingsOpt_SuppressTypeSignaturesOpt_SuppressUniquesOpt_SuppressStgExtsOpt_SuppressTicksOpt_SuppressTimestampsOpt_AutoLinkPackagesOpt_ImplicitImportQualifiedOpt_KeepHscppFilesOpt_KeepHiDiffsOpt_KeepHcFilesOpt_KeepSFilesOpt_KeepTmpFilesOpt_KeepRawTokenStreamOpt_KeepLlvmFilesOpt_KeepHiFilesOpt_KeepOFilesOpt_BuildDynamicTooOpt_DistrustAllPackagesOpt_PackageTrustOpt_PluginTrustworthyOpt_G_NoStateHackOpt_G_NoOptCoercionDumpFlagOpt_D_dump_cmmOpt_D_dump_cmm_from_stgOpt_D_dump_cmm_rawOpt_D_dump_cmm_verbose_by_procOpt_D_dump_cmm_verboseOpt_D_dump_cmm_cfgOpt_D_dump_cmm_cbeOpt_D_dump_cmm_switchOpt_D_dump_cmm_procOpt_D_dump_cmm_spOpt_D_dump_cmm_sinkOpt_D_dump_cmm_cafOpt_D_dump_cmm_procmapOpt_D_dump_cmm_splitOpt_D_dump_cmm_infoOpt_D_dump_cmm_cpsOpt_D_dump_cfg_weightsOpt_D_dump_asmOpt_D_dump_asm_nativeOpt_D_dump_asm_livenessOpt_D_dump_asm_regallocOpt_D_dump_asm_regalloc_stagesOpt_D_dump_asm_conflictsOpt_D_dump_asm_statsOpt_D_dump_asm_expandedOpt_D_dump_llvmOpt_D_dump_core_statsOpt_D_dump_deriv Opt_D_dump_dsOpt_D_dump_ds_preoptOpt_D_dump_foreignOpt_D_dump_inliningsOpt_D_dump_rule_firingsOpt_D_dump_rule_rewritesOpt_D_dump_simpl_traceOpt_D_dump_occur_analOpt_D_dump_parsedOpt_D_dump_parsed_ast Opt_D_dump_rnOpt_D_dump_rn_astOpt_D_dump_simplOpt_D_dump_simpl_iterationsOpt_D_dump_specOpt_D_dump_prepOpt_D_dump_stgOpt_D_dump_stg_unarisedOpt_D_dump_stg_finalOpt_D_dump_call_arityOpt_D_dump_exitifyOpt_D_dump_stranalOpt_D_dump_str_signaturesOpt_D_dump_cpranalOpt_D_dump_cpr_signatures Opt_D_dump_tcOpt_D_dump_tc_astOpt_D_dump_hieOpt_D_dump_typesOpt_D_dump_rulesOpt_D_dump_cseOpt_D_dump_worker_wrapperOpt_D_dump_rn_traceOpt_D_dump_rn_statsOpt_D_dump_opt_cmmOpt_D_dump_simpl_statsOpt_D_dump_cs_traceOpt_D_dump_tc_traceOpt_D_dump_ec_traceOpt_D_dump_if_traceOpt_D_dump_vt_traceOpt_D_dump_splicesOpt_D_th_dec_fileOpt_D_dump_BCOsOpt_D_dump_tickedOpt_D_dump_rttiOpt_D_source_statsOpt_D_verbose_stg2stg Opt_D_dump_hiOpt_D_dump_hi_diffsOpt_D_dump_mod_cyclesOpt_D_dump_mod_mapOpt_D_dump_timings!Opt_D_dump_view_pattern_commoningOpt_D_verbose_core2coreOpt_D_dump_debugOpt_D_dump_jsonOpt_D_ppr_debugOpt_D_no_debug_outputoptimisationFlags$fToJsonWarnReason$fOutputableWarnReason$fOutputableLanguage $fEqLanguage$fEnumLanguage$fShowLanguage$fBoundedLanguage$fShowWarnReason$fEqWarningFlag$fShowWarningFlag$fEnumWarningFlag$fEqGeneralFlag$fShowGeneralFlag$fEnumGeneralFlag $fEqDumpFlag$fShowDumpFlag$fEnumDumpFlagWay WayCustom WayThreadedWayDebugWayProf WayEventLogWayDynhasWayallowed_combinationwaysTag waysBuildTagwayTag wayRTSOnlywayDescwayGeneralFlagswayUnsetGeneralFlagswayOptcwayOptlwayOptPhostIsProfiled hostIsDynamic hostFullWays$fEqWay$fOrdWay $fShowWayPairpFstpSndunPairtoPairswappLiftFstpLiftSnd$fOutputablePair $fMonoidPair$fSemigroupPair$fTraversablePair$fFoldablePair$fApplicativePair $fFunctorPairOrdListnilOLunitOLsnocOLconsOLconcatOLheadOLlastOLisNilOLappOLfromOL fromOLReversemapOLfoldrOLfoldlOLtoOL reverseOL strictlyEqOL strictlyOrdOL$fTraversableOrdList$fFoldableOrdList$fMonoidOrdList$fSemigroupOrdList$fOutputableOrdList$fFunctorOrdListAssocgetNth unionLists minusListassocDefaultUsingassoc assocDefault assocUsing assocMaybe hasNoDups equivClasses removeDups findDupsEqBagemptyBagunitBag lengthBagelemBag unionManyBags unionBagsconsBagsnocBag isEmptyBagisSingletonBag filterBag filterBagMallBaganyBaganyBagM concatBag catBagMaybes partitionBagpartitionBagWithfoldBagmapBag concatMapBagconcatMapBagPair mapMaybeBagmapBagMmapBagM_ flatMapBagMflatMapBagPairMmapAndUnzipBagM mapAccumBagL mapAccumBagLM listToBag bagToList$fTraversableBag $fFoldableBag $fDataBag$fOutputableBag $fFunctorBagDeltasMkDeltasDelta initDeltas MCoercionN CoercionN ThetaTypeKindPredTypeMultScaled MCoercion TyCoBinderTyLitUnivCoProvenanceCoercionTyThing mkForAllTy mkFunTyManypprTyVarpprTyLitpprCopprKindpprType LayoutInfoExplicitBraces VirtualBraces NoLayoutInfo PsLocatedPsSpan psRealSpan psBufSpanPsLoc psRealLocpsBufPos RealLocatedLocated GenLocatedLUnhelpfulSpanReasonUnhelpfulNoLocationInfoUnhelpfulWiredInUnhelpfulInteractiveUnhelpfulGeneratedUnhelpfulOtherSrcSpan RealSrcSpan UnhelpfulSpanBufSpan bufSpanStart bufSpanEnd srcSpanFileSrcLoc RealSrcLoc UnhelpfulLocBufPosbufPosmkSrcLoc mkRealSrcLoc getBufPosnoSrcLocgeneratedSrcLocinteractiveSrcLocmkGeneralSrcLoc srcLocFile srcLocLine srcLocCol advanceSrcLoc advanceBufPos sortLocatedsortRealLocated lookupSrcLoc lookupSrcSpan getBufSpan noSrcSpanwiredInSrcSpaninteractiveSrcSpangeneratedSrcSpanisGeneratedSrcSpanmkGeneralSrcSpan srcLocSpanrealSrcLocSpan mkRealSrcSpan mkSrcSpancombineSrcSpanssrcSpanFirstCharacter isGoodSrcSpan isOneLineSpan containsSpansrcSpanStartLinesrcSpanEndLinesrcSpanStartCol srcSpanEndCol srcSpanStart srcSpanEndrealSrcSpanStartrealSrcSpanEndsrcSpanFileName_maybeunhelpfulSpanFSpprUnhelpfulSpanReasonpprUserRealSpanmapLocunLocgetLocnoLocmkGeneralLocated combineLocsaddCLoc eqLocated cmpLocated cmpBufSpanrightmost_smallestleftmost_smallestleftmost_largestspans isSubspanOfisRealSubspanOfliftLgetRealSrcSpan unRealSrcSpan advancePsLocmkPsSpan psSpanStart psSpanEnd mkSrcSpanPsleftmostColumn$fShowRealSrcLoc$fOutputableRealSrcLoc$fOutputableSrcLoc$fOutputableRealSrcSpan$fShowRealSrcSpan$fOrdRealSrcSpan$fToJsonRealSrcSpan$fDataRealSrcSpan$fSemigroupBufSpan$fOutputableUnhelpfulSpanReason$fOutputableSrcSpan$fNFDataSrcSpan$fToJsonSrcSpan $fDataSrcSpan$fOutputableGenLocated$fEqLayoutInfo$fOrdLayoutInfo$fShowLayoutInfo$fDataLayoutInfo $fEqPsSpan $fOrdPsSpan $fShowPsSpan $fEqPsLoc $fOrdPsLoc $fShowPsLoc$fEqGenLocated$fOrdGenLocated$fDataGenLocated$fFunctorGenLocated$fFoldableGenLocated$fTraversableGenLocated $fEqSrcSpan $fShowSrcSpan$fEqUnhelpfulSpanReason$fShowUnhelpfulSpanReason $fEqBufSpan $fOrdBufSpan $fShowBufSpan$fEqRealSrcSpan $fEqSrcLoc $fShowSrcLoc $fEqBufPos $fOrdBufPos $fShowBufPos$fEqRealSrcLoc$fOrdRealSrcLocMsgDocSeverity SevOutputSevFatalSevInteractiveSevDumpSevInfo SevWarningSevError DumpFormat FormatHaskell FormatCore FormatSTGFormatByteCode FormatCMM FormatASMFormatC FormatLLVM FormatText DumpOptionsdumpForcedToFile dumpSuffix TraceAction DumpActiondefaultTraceActiondefaultDumpActiongetCaretDiagnosticmkLocMessageAnn mkLocMessageCmdLineP runCmdLineEwMWarn warnReasonwarnMsgErrerrMsgReasonDeprecatedFlagReasonUnrecognisedFlagOptKindNoArgHasArgSepArgPrefix OptPrefix OptIntSuffix IntSuffix FloatSuffixPassFlag AnySuffix GhcFlagModeOnlyGhcOnlyGhciAllModes HiddenFlagFlagflagName flagOptKind flagGhcModedefFlag defGhcFlag defGhciFlag defHiddenFlagrunEwMaddErraddWarn addFlagWarn deprecategetArg getCurLocliftEwMgetCmdLineStateputCmdLineState processArgserrorsToGhcException $fMonadEwM$fApplicativeEwM $fFunctorEwM$fMonadCmdLineP$fApplicativeCmdLineP$fFunctorCmdLineP$fEqWarnReason TypeOrKind TypeLevel KindLevelSpliceExplicitFlagExplicitSpliceImplicitSplice IntWithInf FractionalLitFLfl_textfl_negfl_value IntegralLitILil_textil_negil_value InlineSpecInline InlinableNoInline NoUserInline RuleMatchInfoConLikeFunLike InlinePragmainl_src inl_inlineinl_satinl_actinl_rule Activation AlwaysActive ActiveBefore ActiveAfter FinalActive NeverActive CompilerPhase InitialPhasePhase FinalPhasePhaseNum SourceText NoSourceText SuccessFlag DefMethSpec VanillaDM GenericDM TailCallInfoAlwaysTailCalledNoTailCallInfo InsideLam IsInsideLam NotInsideLamInterestingCxt IsInterestingNotInteresting BranchCountOccInfoManyOccsIAmDeadOneOccIAmALoopBreakerocc_tail occ_in_lamocc_n_br occ_int_cxtocc_rules_onlyEPfromEPtoEP TupleSort BoxedTuple UnboxedTupleConstraintTuplePprPrec OverlapMode NoOverlap Overlappable OverlappingOverlaps Incoherent OverlapFlag overlapMode isSafeOverlapOrigin FromSource GeneratedRecFlag Recursive NonRecursiveBoxityBoxedUnboxed TopLevelFlagTopLevel NotTopLevel LexicalFixityInfixFixityDirectionInfixLInfixRInfixNFixityRuleName WarningTxt DeprecatedTxt StringLiteralsl_stsl_fsFunctionOrData IsFunctionIsData PromotionFlag NotPromoted IsPromotedSwapFlag NotSwapped IsSwapped OneShotInfo NoOneShotInfo OneShotLam AlignmentalignmentBytesConTagZConTag JoinArityRepArityArity LeftOrRightCLeftCRightpickLR fIRST_TAG mkAlignment alignmentOf noOneShotInfo isOneShotInfohasNoOneShotInfo worstOneShot bestOneShotflipSwap isSwappedunSwap isPromotedpprWarningTxtForMsg pprRuleName maxPrecedence minPrecedence defaultFixity negateFixity funTyFixity compareFixity isNotTopLevel isTopLevelisBoxedisRecisNonRec boolToRecFlag isGeneratedsetOverlapModeMaybehasIncoherentFlaghasOverlappableFlaghasOverlappingFlagtopPrecsigPrecfunPrecopPrecstarPrecappPrec maybeParentupleSortBoxityboxityTupleSort tupleParens sumParenspprAlternative oneBranch noOccInfo isNoOccInfo isManyOccs seqOccInfo tailCallInfozapOccTailCallInfoisAlwaysTailCalledstrongLoopBreakerweakLoopBreakerisWeakLoopBreakerisStrongLoopBreaker isDeadOccisOneOcc zapFragileOcc successIf succeededfailedpprWithSourceTextactivateAfterInitialactivateDuringFinalisActiveactiveInFinalPhase isNeverActiveisAlwaysActive competesWith isConLike isFunLikenoUserInlineSpecdefaultInlinePragmaalwaysInlinePragmaneverInlinePragmainlinePragmaSpecdfunInlinePragmaisDefaultInlinePragmaisInlinePragmaisInlinablePragmaisAnyInlinePragmainlinePragmaSatinlinePragmaActivationinlinePragmaRuleMatchInfosetInlinePragmaActivationsetInlinePragmaRuleMatchInfo pprInlinepprInlineDebug mkIntegralLitnegateIntegralLitmkFractionalLitnegateFractionalLitintegralFractionalLitinfinity intGtLimittreatZeroAsInf mkIntWithInf isTypeLevel isKindLevel$fOutputableLeftOrRight$fOutputableAlignment$fOutputableOneShotInfo$fOutputableSwapFlag$fOutputablePromotionFlag$fOutputableFunctionOrData$fOutputableFixityDirection$fOutputableLexicalFixity$fOutputableTopLevelFlag$fOutputableBoxity$fOutputableRecFlag$fOutputableOrigin$fOutputableTupleSort$fMonoidInterestingCxt$fSemigroupInterestingCxt$fMonoidInsideLam$fSemigroupInsideLam$fOutputableTailCallInfo$fOutputableOccInfo$fOutputableDefMethSpec$fOutputableSuccessFlag$fOutputableSourceText$fOutputableOverlapMode$fOutputableOverlapFlag $fEqFixity$fOutputableFixity$fOutputableStringLiteral$fEqStringLiteral$fOutputableWarningTxt$fOutputableCompilerPhase$fOutputableActivation$fOutputableRuleMatchInfo$fOutputableInlineSpec$fOutputableInlinePragma$fOutputableIntegralLit$fOrdIntegralLit$fEqIntegralLit$fOutputableFractionalLit$fOrdFractionalLit$fEqFractionalLit$fNumIntWithInf$fOutputableIntWithInf$fOrdIntWithInf$fOutputableTypeOrKind$fEqTypeOrKind$fDataSpliceExplicitFlag$fEqIntWithInf$fDataFractionalLit$fShowFractionalLit$fDataIntegralLit$fShowIntegralLit$fEqInlinePragma$fDataInlinePragma$fEqInlineSpec$fDataInlineSpec$fShowInlineSpec$fEqRuleMatchInfo$fDataRuleMatchInfo$fShowRuleMatchInfo$fEqActivation$fDataActivation$fEqCompilerPhase$fEqWarningTxt$fDataWarningTxt$fDataStringLiteral $fDataFixity$fEqOverlapFlag$fDataOverlapFlag$fEqOverlapMode$fDataOverlapMode$fDataSourceText$fShowSourceText$fEqSourceText $fEqOccInfo$fEqTailCallInfo $fEqInsideLam$fEqInterestingCxt $fEqTupleSort$fDataTupleSort $fEqPprPrec $fOrdPprPrec $fShowPprPrec $fEqOrigin $fDataOrigin $fEqRecFlag $fDataRecFlag $fEqBoxity $fDataBoxity$fDataLexicalFixity$fEqLexicalFixity$fEqFixityDirection$fDataFixityDirection$fEqFunctionOrData$fOrdFunctionOrData$fDataFunctionOrData$fEqPromotionFlag$fDataPromotionFlag$fEqOneShotInfo $fEqAlignment$fOrdAlignment$fEqLeftOrRight$fDataLeftOrRight Uniquable getUnique uNIQUE_BITSmkUniqueGrimilygetKey incrUnique mkLocalUniqueminLocalUniquemaxLocalUnique newTagUniquemkUnique unpkUniqueisValidKnownKeyUniquehasKeyeqUniqueltUniquenonDetCmpUniquepprUniqueAlwaysmkAlphaTyVarUnique mkCoVarUniquemkPreludeClassUniquemkPreludeTyConUniquetyConRepNameUniquemkPreludeDataConUniquedataConWorkerUniquedataConTyRepNameUniquemkPrimOpIdUniquemkPrimOpWrapperUniquemkPreludeMiscIdUniqueinitTyVarUniquemkBuiltinUniquemkPseudoUniqueDmkPseudoUniqueEmkPseudoUniqueHmkRegSingleUniquemkRegSubUniquemkRegPairUniquemkRegClassUniquemkCostCentreUniquemkVarOccUniquemkDataOccUnique mkTvOccUnique mkTcOccUniqueinitExitJoinUnique $fShowUnique$fOutputableUnique $fEqUnique$fUniquableUnique$fUniquableInt$fUniquableFastString MonadUniquegetUniqueSupplyM getUniqueM getUniquesMUniqSM UniqSupplyinitUniqSupplymkSplitUniqSupplysplitUniqSupplylistSplitUniqSupplyuniqFromSupplyuniqsFromSupplytakeUniqFromSupply uniqFromMaskinitUsinitUs_$fMonadFixUniqSM$fMonadFailUniqSM$fApplicativeUniqSM $fMonadUniqSM$fMonadUniqueUniqSM$fFunctorUniqSM NonDetUniqFM getNonDetUniqFMemptyUFM isNullUFMunitUFMunitDirectlyUFM listToUFMlistToUFM_DirectlylistToIdentityUFM listToUFM_CaddToUFM addListToUFMaddListToUFM_DirectlyaddToUFM_Directly addToUFM_C addToUFM_AccalterUFMaddListToUFM_C adjustUFMadjustUFM_Directly delFromUFMdelListFromUFMdelListFromUFM_DirectlydelFromUFM_DirectlyplusUFM plusUFM_C plusUFM_CD plusUFM_CD2plusMaybeUFM_C plusUFMListminusUFM intersectUFMintersectUFM_C disjointUFMfoldUFMmapUFMmapUFM_Directly filterUFMfilterUFM_Directly partitionUFMsizeUFMelemUFMelemUFM_Directly lookupUFMlookupUFM_DirectlylookupWithDefaultUFMlookupWithDefaultUFM_DirectlyeltsUFMufmToSet_DirectlyanyUFMallUFM seqEltsUFM nonDetEltsUFM nonDetKeysUFMnonDetStrictFoldUFMnonDetStrictFoldUFM_DirectlynonDetUFMToList ufmToIntMapunsafeIntMapToUFMunsafeCastUFMKey equalKeysUFM pprUniqFMpprUFMpprUFMWithKeys pluralUFM$fOutputableUniqFM$fMonoidUniqFM$fSemigroupUniqFM$fTraversableNonDetUniqFM$fFoldableNonDetUniqFM$fFunctorNonDetUniqFM $fDataUniqFM $fEqUniqFM$fFunctorUniqFM SymbolTable DictionaryUserData ud_get_name ud_get_fsud_put_nonbinding_nameud_put_binding_name ud_put_fsFixedLengthEncoding unFixedLengthBinaryput_putgetBin BinHandleBinData dataHandle handleData getUserData setUserData withBinBuffercastBinputAtgetAt openBinMemtellBinseekBin writeBinMem readBinMemputBytegetByte putULEB128 getULEB128 putSLEB128 getSLEB128lazyPutlazyGet newReadState newWriteState putDictionary getDictionaryputFS$fNFDataBinData$fBinarySourceText$fBinarySerialized$fBinarySrcSpan$fBinaryUnhelpfulSpanReason$fBinaryBufSpan$fBinaryBufPos$fBinaryRealSrcSpan$fBinaryGenLocated$fBinaryStringLiteral$fBinaryWarningTxt$fBinaryFixity$fBinaryFixityDirection$fBinaryOverlapFlag$fBinaryOverlapMode$fBinaryRecFlag$fBinaryInlineSpec$fBinaryRuleMatchInfo$fBinaryInlinePragma$fBinaryActivation$fBinaryTupleSort$fBinaryFunctionOrData$fBinaryFingerprint$fBinaryPromotionFlag$fBinaryLeftOrRight$fBinaryFastString$fBinaryByteString$fBinarySomeTypeRep$fBinaryTypeRep$fBinaryTypeLitSort$fBinaryKindRep$fBinaryRuntimeRep$fBinaryVecElem$fBinaryVecCount $fBinaryTyCon $fBinaryBin $fBinaryRatio$fBinaryInteger$fBinaryDiffTime $fBinaryDay$fBinaryUTCTime$fBinaryEither $fBinaryMaybe$fBinary(,,,,,,)$fBinary(,,,,,)$fBinary(,,,,) $fBinary(,,,) $fBinary(,,) $fBinary(,) $fBinaryArray $fBinary[] $fBinaryInt $fBinaryChar $fBinaryBool $fBinary() $fBinaryInt64 $fBinaryInt32 $fBinaryInt16 $fBinaryInt8$fBinaryWord64$fBinaryWord32$fBinaryWord16 $fBinaryWord8$fBinaryFixedLengthEncoding$fBinaryFixedLengthEncoding0$fBinaryFixedLengthEncoding1$fBinaryFixedLengthEncoding2$fBinaryBinData$fEqBin$fOrdBin $fShowBin $fBoundedBinstableModuleNameCmp pprModuleName moduleNameFSmoduleNameString mkModuleNamemkModuleNameFSmoduleNameSlashesmoduleNameColonsparseModuleName$fNFDataModuleName$fDataModuleName$fBinaryModuleName$fOutputableModuleName$fOrdModuleName$fEqModuleName$fUniquableModuleNameUnlitHsPpHscCcxxCcCobjcCobjcxxHCcAsLlvmOptLlvmLlc LlvmMangleCmmCppCmm MergeForeignStopLn HscSource HsSrcFile HsBootFileHsigFilehscSourceString isHsBootOrSig isHsigFileanyHscisStopLneqPhase happensBefore startPhase phaseInputExtisHaskellishSuffixisBackpackishSuffixisHaskellSigSuffixisHaskellSrcSuffix isCishSuffixisHaskellUserSrcSuffixisObjectSuffixisDynLibSuffixisSourceSuffixisHaskellishTargetisHaskellishFilenameisHaskellSrcFilenameisCishFilenameisHaskellUserSrcFilenameisSourceFilenameisHaskellSigFilenameisObjectFilenameisDynLibFilename$fBinaryHscSource$fOutputablePhase $fEqPhase $fShowPhase $fEqHscSource$fOrdHscSource$fShowHscSourceUniqDFM emptyUDFMunitUDFM addToUDFMaddToUDFM_DirectlyaddToUDFM_C_Directly addToUDFM_C addListToUDFM delFromUDFM plusUDFM_CplusUDFM lookupUDFMlookupUDFM_DirectlyelemUDFMfoldUDFMnonDetStrictFoldUDFMeltsUDFM filterUDFMfilterUDFM_Directly udfmToList equalKeysUDFM isNullUDFMsizeUDFM intersectUDFMudfmIntersectUFM disjointUDFMdisjointUdfmUfm minusUDFM udfmMinusUFM ufmMinusUDFM partitionUDFMdelListFromUDFM udfmToUfm listToUDFMlistToUDFM_Directly adjustUDFMadjustUDFM_Directly alterUDFMmapUDFManyUDFMallUDFMalwaysUnsafeUfmToUdfmunsafeCastUDFMKey pprUniqDFMpprUDFM $fEqTaggedVal$fOutputableUniqDFM$fMonoidUniqDFM$fSemigroupUniqDFM$fTraversableUniqDFM$fFoldableUniqDFM $fDataUniqDFM$fFunctorUniqDFM$fDataTaggedVal$fFunctorTaggedValUniqSet emptyUniqSet unitUniqSet mkUniqSetaddOneToUniqSetaddListToUniqSetdelOneFromUniqSetdelOneFromUniqSet_DirectlydelListFromUniqSetdelListFromUniqSet_Directly unionUniqSetsunionManyUniqSets minusUniqSetintersectUniqSetsdisjointUniqSetsrestrictUniqSetToUFMuniqSetMinusUFMuniqSetMinusUDFMelementOfUniqSetelemUniqSet_Directly filterUniqSetfilterUniqSet_DirectlypartitionUniqSet uniqSetAny uniqSetAll sizeUniqSetisEmptyUniqSet lookupUniqSetlookupUniqSet_DirectlynonDetEltsUniqSetnonDetKeysUniqSetnonDetStrictFoldUniqSet mapUniqSet getUniqSetunsafeUFMToUniqSet pprUniqSet$fOutputableUniqSet $fEqUniqSet $fDataUniqSet$fSemigroupUniqSet$fMonoidUniqSetUniqDSet emptyUniqDSet unitUniqDSet mkUniqDSetaddOneToUniqDSetaddListToUniqDSetdelOneFromUniqDSetdelListFromUniqDSetunionUniqDSetsunionManyUniqDSets minusUniqDSetuniqDSetMinusUniqSetintersectUniqDSetsuniqDSetIntersectUniqSetnonDetStrictFoldUniqDSetelementOfUniqDSetfilterUniqDSet sizeUniqDSetisEmptyUniqDSetlookupUniqDSetuniqDSetToListpartitionUniqDSet mapUniqDSet getUniqDSet pprUniqDSet$fOutputableUniqDSet $fEqUniqDSet$fDataUniqDSet$fSemigroupUniqDSet$fMonoidUniqDSetModuleWithIsBootModuleNameWithIsBoot GenWithIsBootGWIBgwib_mod gwib_isBootIsBootInterfaceNotBootIsBoot indefUnitindefUnitPprInfoDefinite unDefinite DefUnitIdunitIdFSInstantiationsGenInstantiationsInstantiatedUnitGenInstantiatedUnit instUnitFS instUnitKeyinstUnitInstanceOf instUnitInsts instUnitHolesRealUnitVirtUnitHoleUnitInstantiatedModuleInstalledModulemkModulepprInstantiatedModule stableUnitCmpunitFreeModuleHolesmoduleFreeHolesmkGenInstantiatedUnitmkInstantiatedUnit mkGenVirtUnit mkVirtUnitmkInstantiatedUnitHashunitFSfsToUnit unitString stringToUnit mapGenUnittoUnitId virtualUnitIdunitIsDefinite unitIdStringstringToUnitId primUnitId bignumUnitId baseUnitId rtsUnitId thisGhcUnitIdinteractiveUnitIdthUnitIdthUnitprimUnit bignumUnitbaseUnitrtsUnit thisGhcUnitinteractiveUnit mainUnitIdmainUnitisInteractiveModulewiredInUnitIds$fNFDataGenModule$fBinaryGenModule$fOutputableUnitId$fUniquableUnitId $fOrdUnitId $fEqUnitId$fBinaryUnitId$fOutputableGenModule$fBinaryDefinite$fOutputableDefinite$fOutputableIndefinite$fUniquableIndefinite$fOrdIndefinite$fEqIndefinite$fBinaryIndefinite$fOrdGenInstantiatedUnit$fEqGenInstantiatedUnit$fBinaryGenInstantiatedUnit$fOutputableGenInstantiatedUnit$fOutputableGenModule0$fBinaryGenUnit $fShowGenUnit$fOutputableGenUnit$fNFDataGenUnit $fDataGenUnit $fOrdGenUnit$fUniquableGenUnit $fEqGenUnit$fOutputableGenModule1$fUniquableGenModule$fBinaryIsBootInterface$fOutputableGenWithIsBoot$fBinaryGenWithIsBoot$fEqGenWithIsBoot$fOrdGenWithIsBoot$fShowGenWithIsBoot$fFunctorGenWithIsBoot$fFoldableGenWithIsBoot$fTraversableGenWithIsBoot$fEqIsBootInterface$fOrdIsBootInterface$fShowIsBootInterface$fDataIsBootInterface$fFunctorIndefinite $fEqDefinite $fOrdDefinite$fFunctorDefinite $fEqGenModule$fOrdGenModule$fDataGenModule$fFunctorGenModule parseUnitparseIndefUnitIdparseHoleyModule parseModSubst ModLocation ml_hs_file ml_hi_file ml_obj_file ml_hie_file addBootSuffixaddBootSuffix_maybeaddBootSuffixLocnaddBootSuffixLocnOut$fOutputableModLocation$fShowModLocationInstalledModuleEnvDModuleNameEnv ModuleNameEnv ModuleSet ModuleEnvfilterModuleEnv elemModuleEnvextendModuleEnvextendModuleEnvWithextendModuleEnvListextendModuleEnvList_CplusModuleEnv_CdelModuleEnvList delModuleEnv plusModuleEnvlookupModuleEnvlookupWithDefaultModuleEnv mapModuleEnv mkModuleEnvemptyModuleEnv moduleEnvKeys moduleEnvEltsmoduleEnvToList unitModuleEnvisEmptyModuleEnv mkModuleSetextendModuleSetextendModuleSetListemptyModuleSet moduleSetElts elemModuleSetintersectModuleSetminusModuleSet delModuleSetunionModuleSet unitModuleSetemptyInstalledModuleEnvlookupInstalledModuleEnvextendInstalledModuleEnvfilterInstalledModuleEnvdelInstalledModuleEnv $fOrdNDModule $fEqNDModule HasModule getModuleContainsModule extractModulemoduleIsDefinitemoduleStableStringstableModuleCmpinstalledModuleEqunitIdEqgetModuleInstantiationgetUnitInstantiationsuninstantiateInstantiatedUnituninstantiateInstantiatedModule isHoleModule mkHoleModule PackageName unPackageName PackageIdUnitInfo UnitKeyInfoUnitKey GenUnitInfo mkUnitKeyInfo mapUnitInfounitPackageIdStringunitPackageNameString pprUnitInfomkUnit mkUnitPprInfo$fOutputablePackageId$fUniquablePackageId$fOutputablePackageName$fUniquablePackageName$fEqPackageName$fOrdPackageName $fEqPackageId$fOrdPackageIdRegClass RcIntegerRcFloatRcDouble$fOutputableRegClass$fUniquableRegClass $fEqRegClassReg RegVirtualRegRealRealReg RealRegSingle RealRegPair VirtualReg VirtualRegI VirtualRegHi VirtualRegF VirtualRegDRegNorenameVirtualRegclassOfVirtualReggetHiVirtualRegFromLogetHiVRegFromLoregNosOfRealReg realRegsAlias regSingle realRegSingleregPair isRealReg takeRealReg isVirtualRegtakeVirtualRegliftPatchFnToRegReg$fOutputableVirtualReg$fUniquableVirtualReg$fOrdVirtualReg$fOutputableRealReg$fUniquableRealReg$fOutputableReg$fUniquableReg$fEqReg$fOrdReg $fEqRealReg $fShowRealReg $fOrdRealReg$fEqVirtualReg$fShowVirtualRegEdgeTypeForwardCrossBackwardSelfLoopNode DigraphNode node_payloadnode_keynode_dependenciesGraphgraphFromEdgedVerticesOrdgraphFromEdgedVerticesUniq findCyclestronglyConnCompG$stronglyConnCompFromEdgedVerticesOrd%stronglyConnCompFromEdgedVerticesUniq%stronglyConnCompFromEdgedVerticesOrdR&stronglyConnCompFromEdgedVerticesUniqRtopologicalSortG reachableG reachablesG hasVertexG verticesGedgesG transposeGemptyG classifyEdges$fOutputableEdge$fOutputableNode$fOutputableGraph$fOutputableEdgeType$fEqTime $fOrdTime $fNumTime$fOutputableTime $fEqEdgeType $fOrdEdgeTypeBooleanFormulaAndOrParensLBooleanFormulamkVarmkFalsemkTruemkAndmkOrisFalseisTrueevalsimplify isUnsatisfied impliesAtomimpliespprBooleanFormulapprBooleanFormulaNice$fBinaryBooleanFormula$fOutputableBooleanFormula$fEqBooleanFormula$fDataBooleanFormula$fFunctorBooleanFormula$fFoldableBooleanFormula$fTraversableBooleanFormulaTyCon isFunTyConisUnboxedTupleTyCon isTupleTyConpartitionInvisibleTypestyConAppTyCon_maybesplitTyConApp_maybeisLiftedTypeKindisMultiplicityTyisRuntimeRepTytcViewcoreView piResultTymkCastTymkAppTy isCoercionTyisPredTyCTypeHeader CLabelString CCallConvCApiConv StdCallConv PrimCallConvJavaScriptCallConv CCallTarget StaticTarget DynamicTarget CCallSpec CExportSpec CExportStaticSafetyPlaySafePlayInterruptible PlayRisky ForeignCallCCallisSafeForeignCallplaySafeplayInterruptibleisDynamicTargetdefaultCCallConvccallConvToIntccallConvAttributepprCLabelStringisCLabelString$fBinarySafety$fOutputableSafety$fBinaryCCallConv$fOutputableCCallConv$fBinaryCCallTarget$fBinaryCCallSpec$fOutputableCCallSpec$fBinaryForeignCall$fOutputableForeignCall$fBinaryCExportSpec$fOutputableCExportSpec$fBinaryHeader$fOutputableHeader $fBinaryCType$fOutputableCType $fEqCType $fDataCType $fEqHeader $fDataHeader$fDataCExportSpec$fEqForeignCall $fEqCCallSpec$fEqCCallTarget$fDataCCallTarget $fEqCCallConv$fDataCCallConv $fEqSafety $fShowSafety $fDataSafetyCprSig getCprSigCprTypect_artyct_cpr CprResulttopCprbotCprconCprasConCpr topCprType botCprType conCprType lubCprType applyCprTy abstractCprTyensureCprTyArity trimCprTymkCprSigForArity topCprSigmkCprSig seqCprSig$fBinaryCprResult$fOutputableCprResult$fBinaryCprType$fOutputableCprType $fEqCprType$fOutputableCprSig $fEqCprSig$fBinaryCprSig $fEqCprResult$fShowCprResult StringBufferbuflencurhGetStringBufferhGetStringBufferBlockhPutStringBufferappendStringBuffersstringToStringBuffernextChar currentCharprevCharstepOn offsetBytesbyteDiffatEndatLinelexemeToStringlexemeToFastStringdecodePrevNCharsparseUnsignedInteger$fShowStringBufferDFastStringEnv FastStringEnv emptyFsEnv unitFsEnv extendFsEnvextendFsEnvList lookupFsEnv alterFsEnvmkFsEnv elemFsEnv plusFsEnv plusFsEnv_C extendFsEnv_CmapFsEnvextendFsEnv_AccextendFsEnvList_C delFromFsEnvdelListFromFsEnv filterFsEnvlookupFsEnv_NF emptyDFsEnv dFsEnvEltsmkDFsEnv lookupDFsEnv TidyOccEnvOccSetOccEnv HasOccNameoccName occNameSpace occNameFS NameSpacetcNameclsName tcClsNamedataName srcDataNametvNamevarNameisDataConNameSpaceisTcClsNameSpace isTvNameSpaceisVarNameSpaceisValNameSpace pprNameSpacepprNonVarNameSpacepprNameSpaceBrief pprOccName mkOccName mkOccNameFSmkVarOcc mkVarOccFS mkDataOcc mkDataOccFS mkTyVarOcc mkTyVarOccFSmkTcOcc mkTcOccFSmkClsOcc mkClsOccFS demoteOccNamenameSpacesRelated emptyOccEnv unitOccEnv extendOccEnvextendOccEnvList lookupOccEnvmkOccEnv elemOccEnv foldOccEnv occEnvElts plusOccEnv plusOccEnv_CextendOccEnv_CextendOccEnv_Acc mapOccEnv mkOccEnv_C delFromOccEnvdelListFromOccEnv filterOccEnv alterOccEnv pprOccEnv emptyOccSet unitOccSetmkOccSet extendOccSetextendOccSetList unionOccSetsunionManyOccSets minusOccSet elemOccSet isEmptyOccSetintersectOccSet filterOccSet occNameStringsetOccNameSpaceisVarOccisTvOccisTcOccisValOcc isDataOcc isDataSymOccisSymOcc parenSymOccstartsWithUnderscoreisDerivedOccNameisDefaultMethodOccisTypeableBindOccmkDataConWrapperOcc mkWorkerOcc mkMatcherOcc mkBuilderOccmkDefaultMethodOccmkClassOpAuxOcc mkDictOccmkIPOcc mkSpecOccmkForeignExportOcc mkRepEqOccmkClassDataConOcc mkNewTyCoOcc mkInstTyCoOcc mkEqPredCoOcc mkCon2TagOcc mkTag2ConOcc mkMaxTagOcc mkDataTOcc mkDataCOcc mkTyConRepOccmkGenRmkGen1RmkRecFldSelOccmkDataConWorkerOccmkSuperDictAuxOccmkSuperDictSelOcc mkLocalOcc mkInstTyTcOcc mkDFunOcc mkMethodOccemptyTidyOccEnvinitTidyOccEnvdelTidyOccEnvListavoidClashesOccEnv tidyOccName$fBinaryNameSpace$fBinaryOccName$fUniquableOccName$fOutputableBndrOccName$fOutputableOccName$fNFDataOccName $fDataOccName $fOrdOccName $fEqOccName$fHasOccNameOccName$fOutputableOccEnv $fDataOccEnv $fEqNameSpace$fOrdNameSpace NamedThing getOccNamegetName BuiltInSyntax UserSyntax nameUnique nameOccName nameNameSpace nameSrcLoc nameSrcSpan isWiredInName isWiredInwiredInNameTyThing_maybeisBuiltInSyntaxisExternalNameisInternalName isHoleName isDynLinkName nameModulenameModule_maybenameIsLocalOrFromnameIsHomePackagenameIsHomePackageImportnameIsFromExternalPackage isTyVarName isTyConName isDataConName isValName isVarName isSystemNamemkInternalNamemkClonedInternalNamemkDerivedInternalNamemkExternalName mkWiredInName mkSystemNamemkSystemNameAtmkSystemVarName mkSysTvName mkFCallName setNameUnique setNameLoc tidyNameOcc localiseName stableNameCmppprNameUnqualifiedpprModulePrefix pprDefinedAtpprNameDefnLocnameStableString getSrcLoc getSrcSpan getOccStringgetOccFS pprInfixName pprPrefixName$fNFDataNameSort$fOutputableNameSort$fOutputableBndrName$fOutputableName $fBinaryName $fDataName$fUniquableName $fOrdName$fEqName$fHasOccNameName $fNFDataName$fNamedThingGenLocated$fNamedThingName NonCaffySetDefUsesDefUseUsesDefsFreeVarsNameSetisEmptyNameSet emptyNameSet unitNameSet mkNameSetextendNameSetList extendNameSet unionNameSet unionNameSets minusNameSet elemNameSetdelFromNameSet filterNameSetintersectNameSetdisjointNameSetdelListFromNameSetintersectsNameSet nameSetAny nameSetAllnameSetElemsStable isEmptyFVsemptyFVsplusFVsplusFVmkFVsaddOneFVunitFVdelFVdelFVs intersectFVsemptyDUsusesOnlymkDUsplusDUduDefsallUsesduUsesfindUses$fSemigroupNonCaffySet$fMonoidNonCaffySetDNameEnvNameEnvdepAnal nameEnvElts emptyNameEnvisEmptyNameEnv unitNameEnv extendNameEnvextendNameEnvList lookupNameEnv alterNameEnv mkNameEnv mkNameEnvWith elemNameEnv plusNameEnv plusNameEnv_CplusNameEnv_CDplusNameEnv_CD2extendNameEnv_C mapNameEnvextendNameEnv_AccextendNameEnvList_CdelFromNameEnvdelListFromNameEnv filterNameEnv anyNameEnvdisjointNameEnvlookupNameEnv_NF emptyDNameEnvlookupDNameEnvdelFromDNameEnvfilterDNameEnv mapDNameEnvadjustDNameEnv alterDNameEnvextendDNameEnvAnnEnv CoreAnnTarget AnnTarget NamedTarget ModuleTarget AnnPayload Annotation ann_target ann_value emptyAnnEnvmkAnnEnvextendAnnEnvList plusAnnEnvfindAnnsfindAnnsByTypeRepdeserializeAnns$fBinaryAnnTarget$fOutputableAnnTarget$fOutputableAnnotation$fFunctorAnnTargetfingerprintBinMemcomputeFingerprintputNameLiterally ArgDocMap DeclDocMap LHsDocString HsDocStringisEmptyDocString mkHsDocStringmkHsDocStringUtf8ByteString unpackHDShsDocStringToByteString ppr_mbDoc appendDocs concatDocsemptyDeclDocMapemptyArgDocMap$fOutputableHsDocString$fBinaryHsDocString$fOutputableDeclDocMap$fBinaryDeclDocMap$fOutputableArgDocMap$fBinaryArgDocMap$fEqHsDocString$fShowHsDocString$fDataHsDocStringmkTupleDataConUniquemkTupleTyConUniquemkCTupleDataConUniquemkCTupleTyConUniquemkSumDataConUniquemkSumTyConUniqueknownUniqueName integerTy naturalTytupleTyConName multMulTyConunrestrictedFunTyConmanyDataConTyCon manyDataConTyoneDataConTyCon oneDataConTymultiplicityTymultiplicityTyConmkPromotedListTyunboxedTupleKind anyTypeOfKindint8ElemRepDataConTyint16ElemRepDataConTyint32ElemRepDataConTyint64ElemRepDataConTyword8ElemRepDataConTyword16ElemRepDataConTyword32ElemRepDataConTyword64ElemRepDataConTyfloatElemRepDataConTydoubleElemRepDataConTy vec2DataConTy vec4DataConTy vec8DataConTyvec16DataConTyvec32DataConTyvec64DataConTyliftedRepDataConTyunliftedRepDataConTyintRepDataConTyint8RepDataConTyint16RepDataConTyint32RepDataConTyint64RepDataConTywordRepDataConTyword8RepDataConTyword16RepDataConTyword32RepDataConTyword64RepDataConTyaddrRepDataConTyfloatRepDataConTydoubleRepDataConTyliftedRepDataConTyConvecRepDataConTyContupleRepDataConTyCon runtimeRepTyruntimeRepTyCon vecCountTyCon vecElemTyConconstraintKindliftedTypeKindTyConliftedTypeKindunitTycoercibleTyConheqTyConmkBoxedTupleTy typeNatKindtypeSymbolKind listTyCon ReqTVBinder InvisTVBinder TyVarBinder TyCoVarBinderVarBndrBndrVisArgInvisArg Specificity InferredSpec SpecifiedSpec InvisibleRequiredvarTypevarMultOutIdOutCoVarOutTyVarOutVarInIdInCoVarInTyVarInVarTyCoVarJoinIdEqVarIpIdDictIdDFunIdEvVarEvIdKindVarTypeVarTcTyVarTKVarNcIdCoVar SpecifiedInferred nonDetCmpVar varUnique varMultMaybe setVarUnique setVarName setVarType updateVarTypeupdateVarTypeMisVisibleArgFlagisInvisibleArgFlagsameVistyVarSpecToBinderstyVarSpecToBinder binderVar binderVars binderArgFlag binderTypemkTyCoVarBinder mkTyVarBindermkTyCoVarBindersmkTyVarBinders isTyVarBinder mapVarBndr mapVarBndrs lookupVarBndr tyVarName tyVarKindsetTyVarUnique setTyVarName setTyVarKindupdateTyVarKindupdateTyVarKindMmkTyVar mkTcTyVartcTyVarDetailssetTcTyVarDetailsidInfo idDetails mkGlobalVar mkLocalVarmkCoVarmkExportedLocalVar lazySetIdInfo setIdDetails globaliseId setIdExportedsetIdNotExportedupdateIdTypeButNotMultupdateIdTypeAndMultupdateIdTypeAndMultM setIdMultisTyVar isTcTyVar isTyCoVarisIdisCoVar isNonCoVarId isLocalId isLocalVar isGlobalIdmustHaveLocalBinding isExportedId$fHasOccNameVar $fDataVar$fOrdVar$fEqVar$fUniquableVar$fNamedThingVar$fOutputableVar$fBinarySpecificity$fBinaryArgFlag$fOutputableArgFlag$fBinaryAnonArgFlag$fOutputableAnonArgFlag$fNamedThingVarBndr$fBinaryVarBndr$fOutputableVarBndr$fOutputableVarBndr0 $fDataVarBndr$fEqAnonArgFlag$fOrdAnonArgFlag$fDataAnonArgFlag $fEqArgFlag $fOrdArgFlag $fDataArgFlag$fEqSpecificity$fOrdSpecificity$fDataSpecificity DTyCoVarSet DTyVarSetDIdSetDVarSet TyCoVarSetCoVarSetTyVarSetIdSetVarSet emptyVarSet unitVarSet extendVarSetextendVarSetListintersectVarSet unionVarSet unionVarSets elemVarSet minusVarSet delVarSet delVarSetList isEmptyVarSetmkVarSetlookupVarSet_Directly lookupVarSetlookupVarSetByName sizeVarSet filterVarSetdelVarSetByKeyelemVarSetByKeypartitionVarSetmapUnionVarSetintersectsVarSetdisjointVarSet subVarSet anyVarSet allVarSet mapVarSetnonDetStrictFoldVarSet fixVarSettransCloVarSet seqVarSet pluralVarSet pprVarSet emptyDVarSet unitDVarSet mkDVarSet extendDVarSet elemDVarSet dVarSetElems subDVarSet unionDVarSet unionDVarSetsmapUnionDVarSetintersectDVarSetdVarSetIntersectVarSetdisjointDVarSetintersectsDVarSetisEmptyDVarSet delDVarSet minusDVarSetdVarSetMinusVarSetnonDetStrictFoldDVarSet anyDVarSet allDVarSet mapDVarSet filterDVarSet sizeDVarSetpartitionDVarSetdelDVarSetList seqDVarSetextendDVarSetListdVarSetToVarSettransCloDVarSetFVInterestingVarFun fvVarList fvDVarSetfvVarSetemptyFVunionFVfilterFV mapUnionFVunionsFV DTyVarEnvDIdEnvDVarEnvCoVarEnv TyCoVarEnvTyVarEnvIdEnvVarEnvTidyEnvRnEnv2 InScopeSetemptyInScopeSetgetInScopeVars mkInScopeSetextendInScopeSetextendInScopeSetListextendInScopeSetSet delInScopeSetelemInScopeSet lookupInScopelookupInScope_Directly unionInScope varSetInScopeuniqAwayunsafeGetFreshLocalUniquemkRnEnv2addRnInScopeSet rnInScope rnInScopeSetrnEnvLrnEnvRrnBndrs2rnBndr2 rnBndr2_varrnBndrLrnBndrRrnEtaLrnEtaRdelBndrLdelBndrR delBndrsL delBndrsRrnOccLrnOccR rnOccL_maybe rnOccR_maybeinRnEnvLinRnEnvRlookupRnInScope nukeRnEnvL nukeRnEnvRrnSwap emptyTidyEnvmkEmptyTidyEnvdelTidyEnvList elemVarEnvelemVarEnvByKeydisjointVarEnv alterVarEnv extendVarEnvextendVarEnv_CextendVarEnv_AccextendVarEnvList plusVarEnv_C plusVarEnv_CDplusMaybeVarEnv_C delVarEnvList delVarEnv minusVarEnv plusVarEnvplusVarEnvList lookupVarEnv filterVarEnvlookupWithDefaultVarEnv mapVarEnvmkVarEnvmkVarEnv_Directly emptyVarEnv unitVarEnv isEmptyVarEnvpartitionVarEnvrestrictVarEnv zipVarEnvlookupVarEnv_NF modifyVarEnvmodifyVarEnv_Directly emptyDVarEnv dVarEnvElts mkDVarEnv extendDVarEnv minusDVarEnv lookupDVarEnv foldDVarEnvnonDetStrictFoldDVarEnv mapDVarEnv filterDVarEnv alterDVarEnv plusDVarEnv plusDVarEnv_C unitDVarEnv delDVarEnvdelDVarEnvListisEmptyDVarEnv elemDVarEnvextendDVarEnv_C modifyDVarEnvpartitionDVarEnvextendDVarEnvList anyDVarEnv$fOutputableInScopeSetPatSyn patSynNamepatSynExTyVarspatSynInstArgTys patSynArityClassMinimalDefATValidityInfoNoATVIATVI ClassATItemATI DefMethInfo ClassOpItemFunDepClass classTyCon classNameclassKey classTyVarsclassMinimalDefmkClassmkAbstractClass classArityclassAllSelIds classSCSelIds classSCSelId classMethods classOpItemsclassATs classATItems classSCTheta classTvsFds classHasFds classBigSigclassExtraBigSigisAbstractClasspprDefMethInfo pprFundeps pprFunDep $fDataClass$fOutputableClass$fNamedThingClass$fUniquableClass $fEqClassFieldLbl FieldLabelflLabelflIsOverloaded flSelector FieldLabelEnvFieldLabelStringmkFieldLabelOccs$fBinaryFieldLbl$fOutputableFieldLbl $fEqFieldLbl$fFunctorFieldLbl$fFoldableFieldLbl$fTraversableFieldLbl$fDataFieldLblAvails AvailInfoAvailAvailTCstableAvailCmpavailavailsToNameSetavailsToNameSetWithSelectorsavailsToNameEnv availName availNamesavailNamesWithSelectorsavailNonFldNames availFldsavailsNamesWithOccsavailNamesWithOccs plusAvail trimAvail filterAvails filterAvail nubAvails$fBinaryAvailInfo$fOutputableAvailInfo $fEqAvailInfo$fDataAvailInfo ImpItemSpecImpAllImpSome is_explicitis_iloc ImpDeclSpecis_modis_asis_qualis_dloc ImportSpecImpSpecis_declis_itemParentNoParentParentIs FldParentpar_ispar_lbl GlobalRdrEltGREgre_namegre_pargre_lclgre_imp GlobalRdrEnv LocalRdrEnvUnqualQualOrigExact rdrNameOcc rdrNameSpace demoteRdrName mkRdrUnqual mkRdrQualmkOrigmkUnqual mkVarUnqualmkQual getRdrName nameRdrName isRdrDataCon isRdrTyVarisRdrTc isSrcRdrNameisUnqualisQual isQual_maybeisOrig isOrig_maybeisExact isExact_maybeemptyLocalRdrEnvextendLocalRdrEnvextendLocalRdrEnvListlookupLocalRdrEnvlookupLocalRdrOccelemLocalRdrEnvlocalRdrEnvEltsinLocalRdrEnvScopedelLocalRdrEnvListgresFromAvailslocalGREsFromAvail gresFromAvailgreQualModName greRdrNames greSrcSpangreParent_maybegresToAvailInfo availFromGREemptyGlobalRdrEnvglobalRdrEnvEltspprGlobalRdrEnvlookupGlobalRdrEnv greOccNamelookupGRE_RdrNamelookupGRE_NamelookupGRE_FieldLabellookupGRE_Name_OccNamegetGRE_NameQualifier_maybes isLocalGRE isRecFldGREisOverloadedRecFldGREgreLabelunQualOKpickGREspickGREsModExpplusGlobalRdrEnvmkGlobalRdrEnv transformGREsextendGlobalRdrEnv shadowNames bestImport unQualSpecOK qualSpecOK importSpecLocimportSpecModuleisExplicitItempprNameProvenancestarInfo $fOrdRdrName $fEqRdrName$fOutputableBndrRdrName$fOutputableRdrName$fHasOccNameRdrName$fOutputableLocalRdrEnv$fOutputableParent$fOutputableImportSpec$fOutputableGlobalRdrElt$fDataGlobalRdrElt$fEqGlobalRdrElt$fEqImportSpec$fDataImportSpec$fEqImpItemSpec$fDataImpItemSpec$fEqImpDeclSpec$fDataImpDeclSpec $fEqParent $fDataParent $fDataRdrNameHasENoEIsUnicodeSyntax NormalSyntaxLRdrNameAnnotationCommentAnnDocCommentNextAnnDocCommentPrevAnnDocCommentNamed AnnDocSection AnnDocOptionsAnnLineCommentAnnBlockComment AnnAnyclass AnnCloseBU AnnCloseC AnnCloseQU AnnCloseS AnnCommaTuple AnnDarrowU AnnDcolonU AnnForallU AnnLarrowU AnnLollyUAnnMdo AnnPercentOneAnnName AnnOpenBUAnnOpenC AnnOpenEQUAnnOpenS AnnDollarAnnDollarDollar AnnPercent AnnRarrowUAnnSimpleQuote AnnSignature AnnThTyQuoteAnnUnit AnnValStrAnnViaAnnlarrowtailUAnnrarrowtailUAnnLarrowtailUAnnRarrowtailUAddAnn ApiAnnKeyApiAnns apiAnnItems apiAnnEofPosapiAnnCommentsapiAnnRogueCommentsmkParensApiAnn getAnnotationgetAndRemoveAnnotationgetAnnotationCommentsgetAndRemoveAnnotationComments unicodeAnn$fOutputableAnnKeywordId$fOutputableAnnotationComment$fEqHasE $fOrdHasE $fDataHasE $fShowHasE$fEqIsUnicodeSyntax$fOrdIsUnicodeSyntax$fDataIsUnicodeSyntax$fShowIsUnicodeSyntax$fEqAnnotationComment$fOrdAnnotationComment$fDataAnnotationComment$fShowAnnotationComment$fEqAnnKeywordId$fOrdAnnKeywordId$fDataAnnKeywordId$fShowAnnKeywordIdOutputableBndrIdXXIE XIEDocNamedXIEDocXIEGroupXIEModuleContents XIEThingWith XIEThingAll XIEThingAbsXIEVar XXImportDecl XCImportDecl XXFieldOcc XCFieldOccXXConDeclField XConDeclField XXTyVarBndr XKindedTyVar XUserTyVarXXHsForAllTelescopeXHsForAllInvis XHsForAllVisXXType XWildCardTyXTyLitXExplicitTupleTyXExplicitListTyXRecTyXBangTyXDocTy XSpliceTyXKindSigXStarTy XIParamTyXParTyXOpTyXSumTyXTupleTyXListTyXFunTy XAppKindTyXAppTyXTyVarXQualTy XForAllTyXXHsPatSigTypeXHsPSXXHsWildCardBndrsXHsWCXXHsImplicitBndrsXHsIB XXLHsQTyVarsXHsQTvsXXPatXCoPatXSigPat XNPlusKPatXNPatXLitPat XSplicePatXViewPatXConPatXSumPat XTuplePatXListPatXBangPatXParPatXAsPatXLazyPatXVarPatXWildPat XXOverLitXOverLitXXLit XHsDoublePrim XHsFloatPrimXHsRat XHsInteger XHsWord64Prim XHsInt64Prim XHsWordPrim XHsIntPrimXHsInt XHsStringPrim XHsString XHsCharPrimXHsCharXXApplicativeArgXApplicativeArgManyXApplicativeArgOneXXParStmtBlock XParStmtBlockXXCmdXCmdWrapXCmdDoXCmdLetXCmdIf XCmdLamCaseXCmdCaseXCmdParXCmdLamXCmdApp XCmdArrForm XCmdArrAppXXStmtLRXRecStmt XTransStmtXParStmtXLetStmt XBodyStmtXApplicativeStmt XBindStmt XLastStmtXXGRHSXCGRHSXXGRHSsXCGRHSsXXMatchXCMatch XXMatchGroupXMGXXCmdTopXCmdTop XXBracketXTExpBrXVarBrXTypBrXDecBrGXDecBrLXPatBrXExpBrXXSpliceXSpliced XQuasiQuoteXUntypedSplice XTypedSpliceXXTupArgXMissingXPresentXXAmbiguousFieldOcc XAmbiguous XUnambiguousXXPragE XTickPragmaXCoreAnnXSCCXXExprXPragEXBinTickXTickXStaticXProcXSpliceE XTcBracketOut XRnBracketOutXBracket XArithSeqXExprWithTySig XRecordUpd XRecordCon XExplicitListXDoXLetXMultiIfXIfXCase XExplicitSumXExplicitTuple XSectionR XSectionLXParXNegAppXOpApp XAppTypeEXAppXLamCaseXLamXLitE XOverLitEXIPVar XOverLabelXRecFld XConLikeOut XUnboundVarXVarXXRoleAnnotDeclXCRoleAnnotDecl XXAnnDecl XHsAnnotation XXWarnDeclXWarning XXWarnDecls XWarnings XXRuleBndr XRuleBndrSig XCRuleBndr XXRuleDeclXHsRule XXRuleDecls XCRuleDecls XXForeignDeclXForeignExportXForeignImport XXDefaultDecl XCDefaultDecl XViaStrategy XXDerivDecl XCDerivDecl XXInstDecl XTyFamInstD XDataFamInstD XClsInstD XXClsInstDecl XCClsInstDeclXXFamEqnXCFamEqn XXConDecl XConDeclH98 XConDeclGADTXXHsDerivingClauseXCHsDerivingClause XXHsDataDefn XCHsDataDefn XXFamilyDecl XCFamilyDeclXXFamilyResultSig XTyVarSig XCKindSigXNoSig XXTyClGroup XCTyClGroup XXTyClDecl XClassDecl XDataDeclXSynDeclXFamDecl XXSpliceDecl XSpliceDecl XXHsGroup XCHsGroupXXHsDecl XRoleAnnotDXDocDXSpliceDXRuleDXAnnD XWarningDXForDXDefD XKindSigDXSigDXValDXDerivDXInstDXTyClDXXStandaloneKindSigXStandaloneKindSig XXFixitySig XFixitySigXXSigXCompleteMatchSig XSCCFunSig XMinimalSig XSpecInstSigXSpecSig XInlineSigXFixSigXIdSig XClassOpSig XPatSynSigXTypeSigXXIPBindXCIPBind XXHsIPBindsXIPBinds XXPatSynBindXPSB XXABExportXABE XXHsBindsLR XPatSynBind XAbsBindsXVarBindXPatBindXFunBind XXValBindsLR XValBindsXXHsLocalBindsLRXEmptyLocalBinds XHsIPBinds XHsValBinds NoGhcTcPassNoGhcTcLIdPIdGhcPIdPIsPassghcPassGhcTcGhcRnGhcPsPassParsedRenamed TypecheckedGhcPassXRecNoExtCon noExtFieldnoExtConpprIfPspprIfRnpprIfTc$fOutputableNoExtField$fOutputableNoExtCon $fDataGhcPass$fIsPassTypechecked$fIsPassRenamed$fIsPassParsed $fDataPass$fDataNoExtCon $fEqNoExtCon $fOrdNoExtCon$fDataNoExtField$fEqNoExtField$fOrdNoExtFieldLPatPatLHsExpr SyntaxExprGRHSs MatchGroupHsSpliceHsCmd pprFunBind pprPatBind pprSpliceDecl pprSplicepprExprpprLExpr IEWildcard NoIEWildcardIEIEVar IEThingAbs IEThingAll IEThingWithIEModuleContentsIEGroupIEDoc IEDocNamedXIELIELIEWrappedName IEWrappedNameIEName IEPatternIEType ImportDecl XImportDeclideclExtideclSourceSrc ideclName ideclPkgQual ideclSource ideclSafeideclQualified ideclImplicitideclAs ideclHidingImportDeclQualifiedStyle QualifiedPre QualifiedPost NotQualified LImportDeclimportDeclQualifiedStyleisImportDeclQualifiedsimpleImportDeclieNameieNames ieWrappedNamelieWrappedNameieLWrappedNamereplaceWrappedNamereplaceLWrappedName pprImpExp$fOutputableIEWrappedName$fOutputableBndrIEWrappedName$fHasOccNameIEWrappedName$fOutputableIE$fOutputableImportDecl$fEqIEWildcard$fDataIEWildcard$fEqIEWrappedName$fDataIEWrappedName$fEqImportDeclQualifiedStyle$fDataImportDeclQualifiedStyleEqSpec DataConRepDataConisUnboxedSumCondataConFullSigdataConStupidThetadataConInstOrigArgTysdataConFieldLabelsdataConSourceAritydataConUserTyVarBindersdataConUserTyVarsdataConExTyCoVars dataConTyCon dataConName DataConBoxer magicDictId voidPrimId mkPrimOpId mkDictSelIdmkDataConWorkId RealDataCon PatSynCon conLikeNameCostCentreIndexunCostCentreIndexCostCentreStatenewCostCentreState getCCIndex$fEqCostCentreIndex$fOrdCostCentreIndex$fDataCostCentreIndex$fBinaryCostCentreIndex CollectedCCsCostCentreStack CCFlavourCafCCExprCCDeclCCHpcCCCcName CostCentreNormalCC AllCafsCCcc_namecc_modcc_loc cmpCostCentreisCafCC isSccCountCC sccAbleCCccFromThisModulemkUserCCmkAutoCC mkAllCafsCCemptyCollectedCCs collectCC currentCCS dontCareCCS isCurrentCCSisCafCCSmaybeSingletonCCSmkSingletonCCSpprCostCentreCorecostCentreUserNamecostCentreUserNameFScostCentreSrcSpan$fBinaryCCFlavour$fBinaryCostCentre$fOutputableCostCentre$fOrdCostCentre$fEqCostCentre$fOutputableCostCentreStack$fEqCostCentreStack$fOrdCostCentreStack$fDataCostCentre $fEqCCFlavour$fOrdCCFlavour$fDataCCFlavourBuiltInSynFamily sfMatchFam sfInteractTopsfInteractInert CoAxiomRule coaxrNamecoaxrAsmpRoles coaxrRole coaxrProvesTypeEqnRoleNominalRepresentationalPhantom CoAxBranchcab_loccab_tvs cab_eta_tvscab_cvs cab_rolescab_lhscab_rhs cab_incompsCoAxiom co_ax_unique co_ax_name co_ax_roleco_ax_tcco_ax_branchesco_ax_implicitBranches MkBranches unMkBranches UnbranchedBranched BranchFlag BranchIndex manyBranches unbranched fromBranches numBranchesmapAccumBranchestoBranchedAxiomtoUnbranchedAxiomcoAxiomNumPatscoAxiomNthBranch coAxiomArity coAxiomName coAxiomRolecoAxiomBranchescoAxiomSingleBranch_maybecoAxiomSingleBranch coAxiomTyConcoAxBranchTyVarscoAxBranchCoVars coAxBranchLHS coAxBranchRHScoAxBranchRolescoAxBranchSpanisImplicitCoAxiomcoAxBranchIncompsplaceHolderIncomps fsFromRoletrivialBuiltInFamily $fBinaryRole$fOutputableRole$fOutputableCoAxBranch $fDataCoAxiom$fNamedThingCoAxiom$fOutputableCoAxiom$fUniquableCoAxiom $fEqCoAxiom$fOutputableCoAxiomRule$fOrdCoAxiomRule$fEqCoAxiomRule$fUniquableCoAxiomRule$fDataCoAxiomRule$fDataCoAxBranch$fEqRole $fOrdRole $fDataRoleLiftingContext coercionType coercionRKind coercionLKind coercionKindseqCo liftCoSubstmkCoercionType coVarRolecoVarKindsTypesRoledecomposePiCos isReflexiveCoisReflCo isGReflCo mkAxiomRuleComkProofIrrelComkSubComkKindCo mkNomReflCo mkGReflComkInstComkLRComkNthCo mkTransComkSymComkUnivCo mkPhantomCo mkAxiomInstCo mkCoVarComkFunCo mkForAllComkAppCo mkTyConAppComkReflCoallNameStringsitName mkUnboundName isUnboundNamebasicKnownKeyNamesgenericTyConNamespRELUDEgHC_PRIMgHC_PRIM_PANICgHC_PRIM_EXCEPTION gHC_TYPES gHC_MAGIC gHC_CSTRING gHC_CLASSESgHC_PRIMOPWRAPPERSgHC_BASEgHC_ENUMgHC_GHCIgHC_GHCI_HELPERSgHC_SHOWgHC_READgHC_NUM gHC_MAYBEgHC_NUM_INTEGERgHC_NUM_NATURALgHC_NUM_BIGNATgHC_LIST gHC_TUPLE dATA_TUPLE dATA_EITHER dATA_LIST dATA_STRING dATA_FOLDABLEdATA_TRAVERSABLEgHC_CONCgHC_IOgHC_IO_ExceptiongHC_STgHC_IX gHC_STABLEgHC_PTRgHC_ERRgHC_REAL gHC_FLOATgHC_TOP_HANDLER sYSTEM_IOdYNAMICtYPEABLEtYPEABLE_INTERNALgENERICS rEAD_PREClEXgHC_INTgHC_WORDmONAD mONAD_FIX mONAD_ZIP mONAD_FAILaRROWcONTROL_APPLICATIVE gHC_DESUGARrANDOMgHC_EXTScONTROL_EXCEPTION_BASE gHC_GENERICS gHC_TYPELITS gHC_TYPENATSdATA_TYPE_EQUALITY dATA_COERCE dEBUG_TRACE uNSAFE_COERCE gHC_SRCLOC gHC_STACKgHC_STACK_TYPES gHC_STATICPTRgHC_STATICPTR_INTERNALgHC_FINGERPRINT_TYPEgHC_OVER_LABELS gHC_RECORDSmAIN rOOT_MAINmkInteractiveModule pRELUDE_NAME mAIN_NAMEdATA_ARRAY_PARALLEL_NAMEdATA_ARRAY_PARALLEL_PRIM_NAME mkPrimModulemkBignumModule mkBaseModule mkBaseModule_mkThisGhcModulemkThisGhcModule_ mkMainModule mkMainModule_main_RDR_Unqualeq_RDRge_RDRle_RDRlt_RDRgt_RDR compare_RDR ltTag_RDR eqTag_RDR gtTag_RDR eqClass_RDR numClass_RDR ordClass_RDR enumClass_RDRmonadClass_RDRmap_RDR append_RDR foldr_RDR build_RDR returnM_RDR bindM_RDR failM_RDRleft_RDR right_RDR fromEnum_RDR toEnum_RDR enumFrom_RDRenumFromTo_RDRenumFromThen_RDRenumFromThenTo_RDRratioDataCon_RDRintegerAdd_RDRintegerMul_RDR ioDataCon_RDR eqString_RDRunpackCString_RDRunpackCStringFoldr_RDRunpackCStringUtf8_RDRunpackCStringFoldrUtf8_RDRnewStablePtr_RDR bindIO_RDR returnIO_RDRfromInteger_RDRfromRational_RDR minus_RDR times_RDRplus_RDR toInteger_RDRtoRational_RDRfromIntegral_RDRfromString_RDR fromList_RDR fromListN_RDR toList_RDR compose_RDRand_RDRnot_RDR getTag_RDRsucc_RDRpred_RDR minBound_RDR maxBound_RDR range_RDR inRange_RDR index_RDRunsafeIndex_RDRunsafeRangeSize_RDR readList_RDRreadListDefault_RDRreadListPrec_RDRreadListPrecDefault_RDR readPrec_RDR parens_RDR choose_RDRlexP_RDR expectP_RDR readField_RDRreadFieldHash_RDRreadSymField_RDRpunc_RDR ident_RDR symbol_RDRstep_RDRalt_RDR reset_RDRprec_RDR pfail_RDR showsPrec_RDR shows_RDRshowString_RDR showSpace_RDRshowCommaSpace_RDR showParen_RDR error_RDR u1DataCon_RDRpar1DataCon_RDRrec1DataCon_RDR k1DataCon_RDR m1DataCon_RDR l1DataCon_RDR r1DataCon_RDRprodDataCon_RDRcomp1DataCon_RDR unPar1_RDR unRec1_RDRunK1_RDR unComp1_RDRfrom_RDR from1_RDRto_RDRto1_RDRdatatypeName_RDRmoduleName_RDRpackageName_RDRisNewtypeName_RDR selName_RDR conName_RDR conFixity_RDRconIsRecord_RDRprefixDataCon_RDRinfixDataCon_RDRleftAssocDataCon_RDRrightAssocDataCon_RDRnotAssocDataCon_RDRuAddrDataCon_RDRuCharDataCon_RDRuDoubleDataCon_RDRuFloatDataCon_RDRuIntDataCon_RDRuWordDataCon_RDR uAddrHash_RDR uCharHash_RDRuDoubleHash_RDRuFloatHash_RDR uIntHash_RDR uWordHash_RDRfmap_RDR replace_RDRpure_RDRap_RDR liftA2_RDRfoldable_foldr_RDR foldMap_RDRnull_RDRall_RDR traverse_RDR mempty_RDR mappend_RDR varQual_RDR tcQual_RDR clsQual_RDR dataQual_RDR wildCardName runMainIOName runRWNameorderingTyConNameordLTDataConNameordEQDataConNameordGTDataConName specTyConNameeitherTyConNameleftDataConNamerightDataConName v1TyConName u1TyConName par1TyConName rec1TyConName k1TyConName m1TyConName sumTyConName prodTyConName compTyConName rTyConName dTyConName cTyConName sTyConName rec0TyConName d1TyConName c1TyConName s1TyConNamenoSelTyConName repTyConName rep1TyConName uRecTyConNameuAddrTyConNameuCharTyConNameuDoubleTyConNameuFloatTyConName uIntTyConNameuWordTyConNameprefixIDataConNameinfixIDataConNameleftAssociativeDataConNamerightAssociativeDataConNamenotAssociativeDataConNamesourceUnpackDataConNamesourceNoUnpackDataConNamenoSourceUnpackednessDataConNamesourceLazyDataConNamesourceStrictDataConNamenoSourceStrictnessDataConNamedecidedLazyDataConNamedecidedStrictDataConNamedecidedUnpackDataConNamemetaDataDataConNamemetaConsDataConNamemetaSelDataConName divIntName modIntNameunpackCStringNameunpackCStringFoldrNameunpackCStringUtf8NamecstringLengthName eqStringNameunpackCStringFoldrUtf8Name inlineIdName eqClassNameeqName ordClassNamegeNamefunctorClassNamefmapNamemonadClassName thenMName bindMName returnMNamemonadFailClassName failMNameapplicativeClassNameapAName pureAName thenANamefoldableClassNametraversableClassNamesemigroupClassName sappendNamemonoidClassName memptyName mappendName mconcatName joinMNamealternativeClassName joinMIdKey apAClassOpKeypureAClassOpKeythenAClassOpKeyalternativeClassKey groupWithName dollarNameotherwiseIdName foldrName buildName augmentNamemapName appendName assertNamebreakpointNamebreakpointCondNameopaqueTyConNamefromStringNamefstNamesndName numClassNamefromIntegerName minusName negateName bnbVarQual bnnVarQual bniVarQualbignatFromWordListNamenaturalToWordNamenaturalToWordClampName naturalEqName naturalNeName naturalGeName naturalLeName naturalGtName naturalLtNamenaturalCompareNamenaturalPopCountNamenaturalShiftRNamenaturalShiftLNamenaturalAddNamenaturalSubNamenaturalSubThrowNamenaturalSubUnsafeNamenaturalMulNamenaturalSignumNamenaturalNegateNamenaturalQuotRemNamenaturalQuotNamenaturalRemNamenaturalAndNamenaturalAndNotName naturalOrNamenaturalXorNamenaturalTestBitNamenaturalBitNamenaturalGcdNamenaturalLcmNamenaturalLog2NamenaturalLogBaseWordNamenaturalLogBaseNamenaturalPowModNamenaturalSizeInBaseNameintegerFromNaturalNameintegerToNaturalClampNameintegerToNaturalThrowNameintegerToNaturalNameintegerToWordNameintegerToIntNameintegerToWord64NameintegerToInt64NameintegerFromWordNameintegerFromWord64NameintegerFromInt64NameintegerAddNameintegerMulNameintegerSubNameintegerNegateName integerEqName integerNeName integerLeName integerGtName integerLtName integerGeNameintegerAbsNameintegerSignumNameintegerCompareNameintegerPopCountNameintegerQuotNameintegerRemNameintegerDivNameintegerModNameintegerDivModNameintegerQuotRemNameintegerToFloatNameintegerToDoubleNameintegerEncodeFloatNameintegerEncodeDoubleNameintegerGcdNameintegerLcmNameintegerAndName integerOrNameintegerXorNameintegerComplementNameintegerBitNameintegerTestBitNameintegerShiftLNameintegerShiftRNamerationalTyConNameratioTyConNameratioDataConName realClassNameintegralClassNamerealFracClassNamefractionalClassNamefromRationalName toIntegerNametoRationalNamefromIntegralNamerealToFracNamefloatingClassNamerealFloatClassNamerationalToFloatNamerationalToDoubleName ixClassNametrModuleTyConNametrModuleDataConNametrNameTyConNametrNameSDataConNametrNameDDataConNametrTyConTyConNametrTyConDataConNamekindRepTyConNamekindRepTyConAppDataConNamekindRepVarDataConNamekindRepAppDataConNamekindRepFunDataConNamekindRepTYPEDataConNamekindRepTypeLitSDataConNamekindRepTypeLitDDataConNametypeLitSortTyConNametypeLitSymbolDataConNametypeLitNatDataConNametypeableClassNametypeRepTyConNamesomeTypeRepTyConNamesomeTypeRepDataConName typeRepIdName mkTrTypeName mkTrConName mkTrAppName mkTrFunNametypeNatTypeRepNametypeSymbolTypeRepNametrGhcPrimModuleNamestarKindRepNamestarArrStarKindRepNamestarArrStarArrStarKindRepNameerrorMessageTypeErrorFamNametypeErrorTextDataConNametypeErrorAppendDataConNametypeErrorVAppendDataConNametypeErrorShowTypeDataConNameunsafeEqualityProofNameunsafeEqualityTyConNameunsafeReflDataConNameunsafeCoercePrimName toDynName dataClassNameassertErrorName traceName enumClassName enumFromNameenumFromToNameenumFromThenNameenumFromThenToNameboundedClassName concatName filterNamezipNameisListClassName fromListName fromListNName toListName showClassName readClassName genClassName gen1ClassNamedatatypeClassNameconstructorClassNameselectorClassNamegenericClassNamesghciIoClassNameghciStepIoMName ioTyConName ioDataConName thenIOName bindIOName returnIOName failIOName printName int8TyConNameint16TyConNameint32TyConNameint64TyConNameword16TyConNameword32TyConNameword64TyConName ptrTyConNamefunPtrTyConNamestablePtrTyConNamenewStablePtrNamemonadFixClassNamemfixNamearrAName composeAName firstANameappAName choiceAName loopAName guardMName liftMNamemzipNametoAnnotationWrapperNamemonadPlusClassNamerandomClassNamerandomGenClassNameisStringClassNameknownNatClassNameknownSymbolClassNameisLabelClassName ipClassNamehasFieldClassNamecallStackTyConNameemptyCallStackNamepushCallStackNamesrcLocDataConNamepLUGINSpluginTyConNamefrontendPluginTyConNamemakeStaticNamestaticPtrInfoTyConNamestaticPtrInfoDataConNamestaticPtrTyConNamestaticPtrDataConNamefromStaticPtrNamefingerprintDataConNamevarQualtcQualclsQualdcQualmk_known_key_nameboundedClassKey enumClassKey eqClassKeyfloatingClassKeyfractionalClassKeyintegralClassKey monadClassKey dataClassKeyfunctorClassKey numClassKey ordClassKey readClassKey realClassKeyrealFloatClassKeyrealFracClassKey showClassKey ixClassKeytypeableClassKeymonadFixClassKeymonadFailClassKeymonadPlusClassKeyrandomClassKeyrandomGenClassKeyisStringClassKeyapplicativeClassKeyfoldableClassKeytraversableClassKey genClassKey gen1ClassKeydatatypeClassKeyconstructorClassKeyselectorClassKeyknownNatClassNameKeyknownSymbolClassNameKeyghciIoClassKeyisLabelClassNameKeysemigroupClassKeymonoidClassKey ipClassKeyhasFieldClassNameKeyaddrPrimTyConKeyarrayPrimTyConKey boolTyConKeybyteArrayPrimTyConKeystringTyConKeycharPrimTyConKey charTyConKeydoublePrimTyConKeydoubleTyConKeyfloatPrimTyConKey floatTyConKey funTyConKeyintPrimTyConKey intTyConKeyint8PrimTyConKey int8TyConKeyint16PrimTyConKey int16TyConKeyint32PrimTyConKey int32TyConKeyint64PrimTyConKey int64TyConKeyintegerTyConKeynaturalTyConKey listTyConKeyforeignObjPrimTyConKey maybeTyConKeyweakPrimTyConKeymutableArrayPrimTyConKeymutableByteArrayPrimTyConKeyorderingTyConKeymVarPrimTyConKeyioPortPrimTyConKey ratioTyConKeyrationalTyConKeyrealWorldTyConKeystablePtrPrimTyConKeystablePtrTyConKey eqTyConKey heqTyConKeyarrayArrayPrimTyConKeymutableArrayArrayPrimTyConKeystatePrimTyConKeystableNamePrimTyConKeystableNameTyConKeyeqPrimTyConKeyeqReprPrimTyConKeyeqPhantPrimTyConKeymutVarPrimTyConKey ioTyConKeyvoidPrimTyConKeywordPrimTyConKey wordTyConKeyword8PrimTyConKey word8TyConKeyword16PrimTyConKeyword16TyConKeyword32PrimTyConKeyword32TyConKeyword64PrimTyConKeyword64TyConKey liftedConKeyunliftedConKey anyBoxConKey kindConKey boxityConKey typeConKeythreadIdPrimTyConKeybcoPrimTyConKey ptrTyConKeyfunPtrTyConKeytVarPrimTyConKeycompactPrimTyConKeyeitherTyConKeyliftedTypeKindTyConKey tYPETyConKeyconstraintKindTyConKeyruntimeRepTyConKeyvecCountTyConKeyvecElemTyConKeypluginTyConKeyfrontendPluginTyConKeyunknownTyConKeyunknown1TyConKeyunknown2TyConKeyunknown3TyConKeyopaqueTyConKey v1TyConKey u1TyConKey par1TyConKey rec1TyConKey k1TyConKey m1TyConKey sumTyConKey prodTyConKey compTyConKey rTyConKey dTyConKey cTyConKey sTyConKey rec0TyConKey d1TyConKey c1TyConKey s1TyConKey noSelTyConKey repTyConKey rep1TyConKey uRecTyConKey uAddrTyConKey uCharTyConKeyuDoubleTyConKeyuFloatTyConKey uIntTyConKey uWordTyConKeytypeNatKindConNameKeytypeSymbolKindConNameKeytypeNatAddTyFamNameKeytypeNatMulTyFamNameKeytypeNatExpTyFamNameKeytypeNatLeqTyFamNameKeytypeNatSubTyFamNameKeytypeSymbolCmpTyFamNameKeytypeNatCmpTyFamNameKeytypeNatDivTyFamNameKeytypeNatModTyFamNameKeytypeNatLogTyFamNameKeyerrorMessageTypeErrorFamKey ntTyConKeycoercibleTyConKeyproxyPrimTyConKey specTyConKey anyTyConKeysmallArrayPrimTyConKeysmallMutableArrayPrimTyConKeystaticPtrTyConKeystaticPtrInfoTyConKeycallStackTyConKeytypeRepTyConKeysomeTypeRepTyConKeysomeTypeRepDataConKeytypeSymbolAppendFamNameKeyunsafeEqualityTyConKeymultiplicityTyConKeyunrestrictedFunTyConKeymultMulTyConKeyint8X16PrimTyConKeyint16X8PrimTyConKeyint32X4PrimTyConKeyint64X2PrimTyConKeyint8X32PrimTyConKeyint16X16PrimTyConKeyint32X8PrimTyConKeyint64X4PrimTyConKeyint8X64PrimTyConKeyint16X32PrimTyConKeyint32X16PrimTyConKeyint64X8PrimTyConKeyword8X16PrimTyConKeyword16X8PrimTyConKeyword32X4PrimTyConKeyword64X2PrimTyConKeyword8X32PrimTyConKeyword16X16PrimTyConKeyword32X8PrimTyConKeyword64X4PrimTyConKeyword8X64PrimTyConKeyword16X32PrimTyConKeyword32X16PrimTyConKeyword64X8PrimTyConKeyfloatX4PrimTyConKeydoubleX2PrimTyConKeyfloatX8PrimTyConKeydoubleX4PrimTyConKeyfloatX16PrimTyConKeydoubleX8PrimTyConKeycharDataConKeyconsDataConKeydoubleDataConKeyfalseDataConKeyfloatDataConKey intDataConKeynothingDataConKeyjustDataConKey eqDataConKey nilDataConKeyratioDataConKeyword8DataConKeystableNameDataConKeytrueDataConKeywordDataConKey ioDataConKey heqDataConKeycrossDataConKey inlDataConKey inrDataConKeygenUnitDataConKeyleftDataConKeyrightDataConKeyordLTDataConKeyordEQDataConKeyordGTDataConKeycoercibleDataConKeystaticPtrDataConKeystaticPtrInfoDataConKeyfingerprintDataConKeysrcLocDataConKeytrTyConTyConKeytrTyConDataConKeytrModuleTyConKeytrModuleDataConKeytrNameTyConKeytrNameSDataConKeytrNameDDataConKeytrGhcPrimModuleKeykindRepTyConKeytypeLitSortTyConKeytypeErrorTextDataConKeytypeErrorAppendDataConKeytypeErrorVAppendDataConKeytypeErrorShowTypeDataConKeyprefixIDataConKeyinfixIDataConKeyleftAssociativeDataConKeyrightAssociativeDataConKeynotAssociativeDataConKeysourceUnpackDataConKeysourceNoUnpackDataConKeynoSourceUnpackednessDataConKeysourceLazyDataConKeysourceStrictDataConKeynoSourceStrictnessDataConKeydecidedLazyDataConKeydecidedStrictDataConKeydecidedUnpackDataConKeymetaDataDataConKeymetaConsDataConKeymetaSelDataConKeyvecRepDataConKeytupleRepDataConKeysumRepDataConKeyruntimeRepSimpleDataConKeysliftedRepDataConKeyunliftedSimpleRepDataConKeysunliftedRepDataConKeysvecCountDataConKeysvecElemDataConKeyskindRepTyConAppDataConKeykindRepVarDataConKeykindRepAppDataConKeykindRepFunDataConKeykindRepTYPEDataConKeykindRepTypeLitSDataConKeykindRepTypeLitDDataConKeytypeLitSymbolDataConKeytypeLitNatDataConKeyunsafeReflDataConKey oneDataConKeymanyDataConKeyintegerISDataConKeyintegerINDataConKeyintegerIPDataConKeynaturalNSDataConKeynaturalNBDataConKey wildCardKeyabsentErrorIdKey augmentIdKey appendIdKey buildIdKey errorIdKey foldrIdKeyrecSelErrorIdKeyseqIdKeyabsentSumFieldErrorIdKey eqStringIdKeynoMethodBindingErrorIdKeynonExhaustiveGuardsErrorIdKeyruntimeErrorIdKey patErrorIdKeyrealWorldPrimIdKeyrecConErrorIdKeyunpackCStringUtf8IdKeyunpackCStringAppendIdKeyunpackCStringFoldrIdKeyunpackCStringIdKeyunpackCStringFoldrUtf8IdKey voidPrimIdKeytypeErrorIdKey divIntIdKey modIntIdKeycstringLengthIdKeyraiseOverflowIdKeyraiseUnderflowIdKeyraiseDivZeroIdKey concatIdKey filterIdKeyzipIdKey bindIOIdKey returnIOIdKeynewStablePtrIdKey printIdKey failIOIdKey nullAddrIdKey voidArgIdKeyfstIdKeysndIdKeyotherwiseIdKey assertIdKey rootMainKey runMainKey thenIOIdKey lazyIdKeyassertErrorIdKey oneShotKeyrunRWKeytraceKeybreakpointIdKeybreakpointCondIdKey inlineIdKeymapIdKeygroupWithIdKey dollarIdKeycoercionTokenIdKey noinlineIdKeyrationalToFloatIdKeyrationalToDoubleIdKey magicDictKey coerceKey unboundKeyfromIntegerClassOpKeyminusClassOpKeyfromRationalClassOpKeyenumFromClassOpKeyenumFromThenClassOpKeyenumFromToClassOpKeyenumFromThenToClassOpKey eqClassOpKey geClassOpKeynegateClassOpKeybindMClassOpKeythenMClassOpKeyfmapClassOpKeyreturnMClassOpKey mfixIdKeyfailMClassOpKey arrAIdKey composeAIdKey firstAIdKey appAIdKey choiceAIdKey loopAIdKeyfromStringClassOpKeytoAnnotationWrapperIdKeyfromIntegralIdKeyrealToFracIdKeytoIntegerClassOpKeytoRationalClassOpKey guardMIdKey liftMIdKey mzipIdKeyghciStepIoMClassOpKeyisListClassKeyfromListClassOpKeyfromListNClassOpKeytoListClassOpKey proxyHashKey mkTyConKey mkTrTypeKey mkTrConKey mkTrAppKeytypeNatTypeRepKeytypeSymbolTypeRepKey typeRepIdKey mkTrFunKey trTYPEKeytrTYPE'PtrRepLiftedKeytrRuntimeRepKeytr'PtrRepLiftedKeystarKindRepKeystarArrStarKindRepKeystarArrStarArrStarKindRepKey toDynIdKeybitIntegerIdKey eqSCSelIdKey heqSCSelIdKeycoercibleSCSelIdKeysappendClassOpKeymemptyClassOpKeymappendClassOpKeymconcatClassOpKeyemptyCallStackKeypushCallStackKeyfromStaticPtrClassOpKey makeStaticKeyunsafeEqualityProofIdKeyunsafeCoercePrimIdKeyintegerFromNaturalIdKeyintegerToNaturalClampIdKeyintegerToNaturalThrowIdKeyintegerToNaturalIdKeyintegerToWordIdKeyintegerToIntIdKeyintegerToWord64IdKeyintegerToInt64IdKeyintegerAddIdKeyintegerMulIdKeyintegerSubIdKeyintegerNegateIdKeyintegerEqIdKeyintegerNeIdKeyintegerLeIdKeyintegerGtIdKeyintegerLtIdKeyintegerGeIdKeyintegerAbsIdKeyintegerSignumIdKeyintegerCompareIdKeyintegerPopCountIdKeyintegerQuotIdKeyintegerRemIdKeyintegerDivIdKeyintegerModIdKeyintegerDivModIdKeyintegerQuotRemIdKeyintegerToFloatIdKeyintegerToDoubleIdKeyintegerEncodeFloatIdKeyintegerEncodeDoubleIdKeyintegerGcdIdKeyintegerLcmIdKeyintegerAndIdKeyintegerOrIdKeyintegerXorIdKeyintegerComplementIdKeyintegerBitIdKeyintegerTestBitIdKeyintegerShiftLIdKeyintegerShiftRIdKeyintegerFromWordIdKeyintegerFromWord64IdKeyintegerFromInt64IdKeynaturalToWordIdKeynaturalToWordClampIdKeynaturalEqIdKeynaturalNeIdKeynaturalGeIdKeynaturalLeIdKeynaturalGtIdKeynaturalLtIdKeynaturalCompareIdKeynaturalPopCountIdKeynaturalShiftRIdKeynaturalShiftLIdKeynaturalAddIdKeynaturalSubIdKeynaturalSubThrowIdKeynaturalSubUnsafeIdKeynaturalMulIdKeynaturalSignumIdKeynaturalNegateIdKeynaturalQuotRemIdKeynaturalQuotIdKeynaturalRemIdKeynaturalAndIdKeynaturalAndNotIdKeynaturalOrIdKeynaturalXorIdKeynaturalTestBitIdKeynaturalBitIdKeynaturalGcdIdKeynaturalLcmIdKeynaturalLog2IdKeynaturalLogBaseWordIdKeynaturalLogBaseIdKeynaturalPowModIdKeynaturalSizeInBaseIdKeybignatFromWordListIdKeynumericClassKeysfractionalClassKeysstandardClassKeysderivableClassKeysinteractiveClassNamesinteractiveClassKeyspretendNameIsInScope hiVersionmAX_TUPLE_SIZEmAX_CTUPLE_SIZE mAX_SUM_SIZEmAX_REDUCTION_DEPTHmAX_SOLVER_ITERATIONS wORD64_SIZE fLOAT_SIZE dOUBLE_SIZEtARGET_MAX_CHAR RecTcChecker TyConFlavour ClassFlavour TupleFlavour SumFlavourDataTypeFlavourNewtypeFlavourAbstractTypeFlavourDataFamilyFlavourOpenTypeFamilyFlavourClosedTypeFamilyFlavourTypeSynonymFlavourBuiltInTypeFlavourPromotedDataConFlavour PrimElemRep Int8ElemRep Int16ElemRep Int32ElemRep Int64ElemRep Word8ElemRep Word16ElemRep Word32ElemRep Word64ElemRep FloatElemRep DoubleElemRepPrimRepVoidRep LiftedRep UnliftedRepInt8RepInt16RepInt32RepInt64RepIntRepWord8Rep Word16Rep Word32Rep Word64RepWordRepAddrRepFloatRep DoubleRepVecRep TyConRepName FamTyConFlavDataFamilyTyConOpenSynFamilyTyConClosedSynFamilyTyConAbstractClosedSynFamilyTyConBuiltInSynFamTyCon Injectivity NotInjective Injective AlgTyConFlavVanillaAlgTyConUnboxedAlgTyCon ClassTyConDataFamInstTyConRuntimeRepInfoNoRRI RuntimeRepVecCountVecElem AlgTyConRhs AbstractTyCon DataTyCon TupleTyConSumTyConNewTyCon data_consdata_cons_sizeis_enumdata_contup_sortnt_rhs nt_etad_rhsnt_co nt_lev_poly tyConUnique tyConName tyConBinders tyConResKind tyConKind tyConArity tyConTyVars tyConCType algTcFields famTcResVartcTyConScopedTyVars tcTyConIsPoly TyConBndrVisNamedTCBAnonTCBTyConTyCoBinder TyConBindermkAnonTyConBindermkAnonTyConBindersmkNamedTyConBindermkNamedTyConBindersmkRequiredTyConBindertyConBinderArgFlagtyConBndrVisArgFlagisNamedTyConBinderisVisibleTyConBinderisInvisibleTyConBinder mkTyConKindtyConInvisTVBinderstyConVisibleTyVarsmkDataTyConRhsvisibleDataCons isNoParenttyConRepName_maybemkPrelTyConRepNametyConRepModOcc isVoidRep isGcPtrRepprimRepCompatibleprimRepsCompatible primRepSizeBprimElemRepSizeBprimRepIsFloattyConFieldLabelslookupTyConFieldLabel mkFunTyCon mkAlgTyCon mkClassTyCon mkTupleTyCon mkSumTyCon mkTcTyConnoTcTyConScopedTyVars mkPrimTyCon mkKindTyConmkLiftedPrimTyConmkSynonymTyCon mkFamilyTyConmkPromotedDataConisAbstractTyCon isPrimTyConisUnliftedTyCon isAlgTyConisVanillaAlgTyConisConstraintKindCon isDataTyConisInjectiveTyConisGenerativeTyConisGenInjAlgRhs isNewTyConunwrapNewTyCon_maybeunwrapNewTyConEtad_maybeisProductTyConisDataProductTyCon_maybeisDataSumTyCon_maybeisTypeSynonymTyCon isTauTyConisFamFreeTyConmustBeSaturatedisGadtSyntaxTyConisEnumerationTyCon isFamilyTyConisOpenFamilyTyConisTypeFamilyTyConisDataFamilyTyConisOpenTypeFamilyTyCon%isClosedSynFamilyTyConWithAxiom_maybetyConInjectivityInfoisBuiltInSynFamTyCon_maybe isTyConAssoctyConAssoc_maybetyConFlavourAssoc_maybetyConTuple_maybeisBoxedTupleTyConisUnboxedSumTyConisPromotedTupleTyConisPromotedDataConisPromotedDataCon_maybe isKindTyConisLiftedTypeKindTyConNameisImplicitTyContyConCType_maybe isTcTyConsetTcTyConKind isTcLevPolyexpandSynTyCon_maybeisTyConWithSrcDataCons tyConDataConstyConDataCons_maybetyConSingleDataCon_maybetyConSingleDataContyConSingleAlgDataCon_maybetyConFamilySize algTyConRhstyConFamilyResVar_maybe tyConRoles newTyConRhsnewTyConEtadAritynewTyConEtadRhsnewTyConCo_maybe newTyConConewTyConDataCon_maybetyConStupidThetasynTyConDefn_maybesynTyConRhs_maybefamTyConFlav_maybe isClassTyContyConClass_maybetyConATsisFamInstTyContyConFamInstSig_maybetyConFamInst_maybetyConFamilyCoercion_maybetyConRuntimeRepInfo mkTyConTagMap tyConFlavourtcFlavourIsOpenpprPromotionQuote initRecTcdefaultRecTcMaxBoundsetRecTcMaxBound checkRecTc tyConSkolem$fBinaryTyConBndrVis$fOutputableTyConBndrVis$fBinaryInjectivity$fOutputableFamTyConFlav$fOutputablePrimElemRep$fOutputablePrimRep $fDataTyCon$fNamedThingTyCon$fOutputableTyConFlavour$fOutputableTyCon$fUniquableTyCon $fEqTyCon$fOutputableAlgTyConFlav$fEqTyConFlavour $fShowPrimRep$fEqPrimElemRep$fShowPrimElemRep$fEqInjectivityShowForAllFlagShowForAllMustShowForAllWhenPrintExplicitKinds UseBndrParensSuppressBndrSigIfaceUnivCoProvIfacePhantomProvIfaceProofIrrelProvIfacePluginProv IfaceReflCo IfaceGReflCo IfaceFunCoIfaceTyConAppCo IfaceAppCo IfaceForAllCo IfaceCoVarCoIfaceAxiomInstCoIfaceAxiomRuleCo IfaceUnivCo IfaceSymCo IfaceTransCo IfaceNthCo IfaceLRCo IfaceInstCo IfaceKindCo IfaceSubCoIfaceFreeCoVar IfaceHoleCoIfaceMCoercion IfaceMReflIfaceMCoIfaceTyConInfoifaceTyConIsPromotedifaceTyConSortIfaceTyConSortIfaceNormalTyConIfaceTupleTyCon IfaceSumTyConIfaceEqualityTyConifaceTyConNameifaceTyConInfoIA_NilIA_ArgIfaceForAllSpecBndrIfaceForAllBndrIfaceTyConBinder IfaceNumTyLit IfaceStrTyLit IfaceContext IfacePredType IfaceMultIfaceFreeTyVar IfaceTyVar IfaceLitTy IfaceAppTy IfaceFunTy IfaceForAllTy IfaceTyConApp IfaceCastTyIfaceCoercionTy IfaceTupleTy IfaceKind IfaceOneShotIfaceNoOneShot IfaceLamBndr IfaceTvBndr IfaceIdBndr IfExtName IfLclName ifaceBndrNamemkIfaceForAllTvBndrmkIfaceTyConKindifaceForAllSpecToBndrsifaceForAllSpecToBndrisIfaceLiftedTypeKindsplitIfaceSigmaTysuppressIfaceInvisiblesstripIfaceInvisVarsifForAllBndrVarifForAllBndrNameifTyConBinderVarifTyConBinderNamemkIfaceTySubstinDomIfaceTySubstsubstIfaceAppArgssubstIfaceTyVarstripInvisArgsappArgsIfaceTypesappArgsIfaceTypesArgFlagspprIfacePrefixAppisIfaceTauType pprIfaceBndrspprIfaceLamBndrpprIfaceIdBndrpprIfaceTvBndrpprIfaceTyConBinders pprIfaceTypepprParendIfaceTypepprPrecIfaceType ppr_fun_arrowmany_typprIfaceAppArgspprParendIfaceAppArgspprIfaceForAllPartpprIfaceForAllPartMustpprIfaceForAllpprIfaceSigmaTypepprUserIfaceForAllpprIfaceTypeApp pprTyTcApppprIfaceCoTcApp pprIfaceTyLitpprIfaceCoercionpprParendIfaceCoercionpprIfaceContextArrpprIfaceContext$fNFDataIfaceOneShot$fBinaryIfaceOneShot$fOutputableIfaceOneShot$fNFDataIfaceTyLit$fBinaryIfaceTyLit$fOutputableIfaceTyLit$fNFDataIfaceTyConSort$fBinaryIfaceTyConSort$fOutputableIfaceTyConSort$fNFDataIfaceTyConInfo$fBinaryIfaceTyConInfo$fOutputableIfaceTyConInfo$fNFDataIfaceTyCon$fBinaryIfaceTyCon$fOutputableIfaceTyCon$fNFDataIfaceAppArgs$fNFDataIfaceBndr$fNFDataIfaceMCoercion$fNFDataIfaceUnivCoProv$fNFDataIfaceCoercion$fNFDataIfaceType$fBinaryDefMethSpec$fBinaryIfaceUnivCoProv$fBinaryIfaceCoercion$fBinaryIfaceMCoercion$fBinaryIfaceType$fBinaryIfaceAppArgs$fOutputableIfaceCoercion$fOutputableIfaceAppArgs$fOutputableIfaceType$fBinaryIfaceBndr$fMonoidIfaceAppArgs$fSemigroupIfaceAppArgs$fOutputableIfaceBndr$fEqIfaceTyCon$fEqIfaceTyConInfo$fEqIfaceTyConSort$fEqIfaceTyLittidyToIfaceTcArgstoIfaceCoercionX toIfaceTcArgs toIfaceTyContoIfaceForAllBndr toIfaceTyLit toIfaceTypeX TyCoFoldertcf_view tcf_tyvar tcf_covartcf_holetcf_tycobinderBlockSubstFlag YesBlockSubst NoBlockSubst CoercionHole ch_co_var ch_blockerch_ref PhantomProvProofIrrelProv PluginProv MCoercionRMReflMCo KindCoercion CoercionP CoercionRReflGRefl TyConAppCoAppCoForAllCoFunCoCoVarCo AxiomInstCo AxiomRuleCoUnivCoSymCoTransCoNthCoLRCoInstCoKindCoSubCoHoleCoTyBinderNamedAnonKnotTiedNumTyLitStrTyLitTyVarTyAppTyTyConAppForAllTyFunTyLitTyCastTy CoercionTyft_afft_multft_argft_res KindOrTypeAnIdAConLikeATyConACoAxiompprShortTyThingpprTyThingCategorytyThingCategory delBinderVarisInvisibleBinderisVisibleBinder isNamedBinder isTyBinder mkTyVarTy mkTyVarTys mkTyCoVarTy mkTyCoVarTysmkFunTy mkScaledFunTy mkVisFunTy mkInvisFunTymkVisFunTyManymkInvisFunTyMany mkVisFunTysmkVisFunTysManymkInvisFunTysMany mkForAllTysmkInvisForAllTysmkPiTymkPiTys mkTyConTy mkTyConApp coHoleCoVarsetCoHoleCoVarfoldTyCotypeSize coercionSizeprovSize scaledMult scaledThing mapScaledType$fNamedThingTyThing$fOutputableTyThing$fOutputableTyLit$fOutputableBlockSubstFlag$fOutputableCoercionHole$fDataCoercionHole$fOutputableUnivCoProvenance$fOutputableMCoercion$fOutputableCoercion$fOutputableType$fOutputableScaled$fOutputableTyCoBinder$fDataTyCoBinder $fDataScaled $fDataType$fDataCoercion$fDataUnivCoProvenance$fDataMCoercion $fEqTyLit $fOrdTyLit $fDataTyLit runTyCoVarstyCoVarsOfTypetyCoVarsOfTypes tyCoVarsOfCo tyCoVarsOfCos deepTcvFoldershallowTyCoVarsOfTypeshallowTyCoVarsOfTypesshallowTyCoVarsOfCoshallowTyCoVarsOfCosshallowTyCoVarsOfTyVarEnvshallowTyCoVarsOfCoVarEnv coVarsOfType coVarsOfTypes coVarsOfCo coVarsOfCoscloseOverKindscloseOverKindsListcloseOverKindsDSettyCoVarsOfTypeDSettyCoVarsOfTypeListtyCoVarsOfTypesDSettyCoVarsOfTypesList tyCoFVsOfType tyCoFVsBndrtyCoFVsVarBndrstyCoFVsVarBndrtyCoFVsOfTypestyCoVarsOfCoDSettyCoVarsOfCoList tyCoFVsOfCo tyCoFVsOfCosalmostDevoidCoVarOfCoinjectiveVarsOfTypeinjectiveVarsOfTypesinvisibleVarsOfTypeinvisibleVarsOfTypesnoFreeVarsOfTypenoFreeVarsOfTypesnoFreeVarsOfCo scopedSorttyCoVarsOfTypeWellScopedtyCoVarsOfTypesWellScoped tidyVarBndrs tidyVarBndravoidNameClashestidyTyCoVarBindertidyTyCoVarBinderstidyFreeTyCoVarstidyOpenTyCoVarstidyOpenTyCoVartidyTyCoVarOcc tidyTypestidyType tidyOpenTypes tidyOpenType tidyTopType tidyOpenKindtidyKindtidyCotidyCos CvSubstEnv TvSubstEnvTCvSubstemptyTvSubstEnvemptyCvSubstEnvcomposeTCvSubstEnvcomposeTCvSubst emptyTCvSubstmkEmptyTCvSubstisEmptyTCvSubst mkTCvSubst mkTvSubst mkCvSubst getTvSubstEnv getCvSubstEnv getTCvInScopegetTCvSubstRangeFVs isInScopenotElemTCvSubst setTvSubstEnv setCvSubstEnv zapTCvSubstextendTCvInScopeextendTCvInScopeListextendTCvInScopeSetextendTCvSubstextendTCvSubstWithClone extendTvSubstextendTvSubstBinderAndInScopeextendTvSubstWithClone extendCvSubstextendCvSubstWithCloneextendTvSubstAndInScopeextendTvSubstListextendTCvSubstList unionTCvSubst zipTvSubst zipCvSubst zipTCvSubst mkTvSubstPrszipTyEnvzipCoEnv substTyWithsubstTyWithUncheckedsubstTyWithInScope substCoWithsubstCoWithUncheckedsubstTyWithCoVars substTysWithsubstTysWithCoVarssubstTyAddInScopeisValidTCvSubstcheckValidSubstsubstTysubstTyUnchecked substScaledTysubstScaledTyUncheckedsubstTyssubstScaledTyssubstTysUncheckedsubstScaledTysUnchecked substThetasubstThetaUnchecked substTyVar substTyVars substTyCoVars lookupTyVarsubstCosubstCoUncheckedsubstCossubstForAllCoBndrsubstForAllCoBndrUsing substCoVar substCoVars lookupCoVarsubstTyVarBndrsubstTyVarBndrs substVarBndr substVarBndrssubstCoVarBndrsubstVarBndrUsingcloneTyVarBndrcloneTyVarBndrs$fOutputableTCvSubst primTyConsunexposedPrimTyConsexposedPrimTyConscharPrimTyConNameintPrimTyConNameint8PrimTyConNameint16PrimTyConNameint32PrimTyConNameint64PrimTyConNamewordPrimTyConNameword8PrimTyConNameword16PrimTyConNameword32PrimTyConNameword64PrimTyConNameaddrPrimTyConNamefloatPrimTyConNamedoublePrimTyConNamemkTemplateKindVarsmkTemplateTyVarsFrommkTemplateTyVarsmkTemplateTyConBindersmkTemplateKiTyVarsmkTemplateKiTyVarmkTemplateKindTyConBindersmkTemplateAnonTyConBinders alphaTyVars alphaTyVar betaTyVar gammaTyVar deltaTyVaralphaTysalphaTybetaTygammaTydeltaTyalphaTyVarsUnliftedRepalphaTyVarUnliftedRepalphaTysUnliftedRepalphaTyUnliftedRepruntimeRep1TyVarruntimeRep2TyVar runtimeRep1Ty runtimeRep2TyopenAlphaTyVar openBetaTyVar openAlphaTy openBetaTymultiplicityTyVar funTyConName tYPETyCon tYPETyConNamemkPrimTyConNametYPEfunctionWithMultiplicityprimRepToRuntimeRep charPrimTy charPrimTyCon intPrimTy intPrimTyCon int8PrimTy int8PrimTyCon int16PrimTyint16PrimTyCon int32PrimTyint32PrimTyCon int64PrimTyint64PrimTyCon wordPrimTy wordPrimTyCon word8PrimTyword8PrimTyCon word16PrimTyword16PrimTyCon word32PrimTyword32PrimTyCon word64PrimTyword64PrimTyCon addrPrimTy addrPrimTyCon floatPrimTyfloatPrimTyCon doublePrimTydoublePrimTyCon mkStatePrimTystatePrimTyConrealWorldTyCon realWorldTyrealWorldStatePrimTy voidPrimTy voidPrimTyCon mkProxyPrimTyproxyPrimTyCon eqPrimTyConeqReprPrimTyConeqPhantPrimTyCon equalityTyConarrayPrimTyConmutableArrayPrimTyConmutableByteArrayPrimTyConbyteArrayPrimTyConarrayArrayPrimTyConmutableArrayArrayPrimTyConsmallArrayPrimTyConsmallMutableArrayPrimTyCon mkArrayPrimTybyteArrayPrimTymkArrayArrayPrimTymkSmallArrayPrimTymkMutableArrayPrimTymkMutableByteArrayPrimTymkMutableArrayArrayPrimTymkSmallMutableArrayPrimTymutVarPrimTyConmkMutVarPrimTyioPortPrimTyConmkIOPortPrimTy mVarPrimTyCon mkMVarPrimTy tVarPrimTyCon mkTVarPrimTystablePtrPrimTyConmkStablePtrPrimTystableNamePrimTyConmkStableNamePrimTycompactPrimTyCon compactPrimTy bcoPrimTy bcoPrimTyCon weakPrimTyCon mkWeakPrimTythreadIdPrimTythreadIdPrimTyCon int8X16PrimTyint8X16PrimTyCon int16X8PrimTyint16X8PrimTyCon int32X4PrimTyint32X4PrimTyCon int64X2PrimTyint64X2PrimTyCon int8X32PrimTyint8X32PrimTyConint16X16PrimTyint16X16PrimTyCon int32X8PrimTyint32X8PrimTyCon int64X4PrimTyint64X4PrimTyCon int8X64PrimTyint8X64PrimTyConint16X32PrimTyint16X32PrimTyConint32X16PrimTyint32X16PrimTyCon int64X8PrimTyint64X8PrimTyConword8X16PrimTyword8X16PrimTyConword16X8PrimTyword16X8PrimTyConword32X4PrimTyword32X4PrimTyConword64X2PrimTyword64X2PrimTyConword8X32PrimTyword8X32PrimTyConword16X16PrimTyword16X16PrimTyConword32X8PrimTyword32X8PrimTyConword64X4PrimTyword64X4PrimTyConword8X64PrimTyword8X64PrimTyConword16X32PrimTyword16X32PrimTyConword32X16PrimTyword32X16PrimTyConword64X8PrimTyword64X8PrimTyCon floatX4PrimTyfloatX4PrimTyCondoubleX2PrimTydoubleX2PrimTyCon floatX8PrimTyfloatX8PrimTyCondoubleX4PrimTydoubleX4PrimTyConfloatX16PrimTyfloatX16PrimTyCondoubleX8PrimTydoubleX8PrimTyCon TyCoMapper tcm_tyvar tcm_covartcm_holetcm_tycobinder tcm_tyconManyOneexpandTypeSynonymskindRep kindRep_maybeisLiftedRuntimeRepisUnliftedTypeKindisUnliftedRuntimeRepisRuntimeRepVarisMultiplicityVarmapTyComapTyCoXgetTyVar isTyVarTygetTyVar_maybegetCastedTyVar_mayberepGetTyVar_maybemkAppTyssplitAppTy_mayberepSplitAppTy_maybetcRepSplitAppTy_maybe splitAppTy splitAppTysrepSplitAppTys mkNumLitTy isNumLitTy mkStrLitTy isStrLitTyisLitTyuserTypeError_maybepprUserTypeErrorTy splitFunTysplitFunTy_maybe splitFunTys funResultTyfunArgTy piResultTys applyTysXtyConAppTyConPicky_maybe tyConAppTyContyConAppArgs_maybe tyConAppArgs tyConAppArgN splitTyConApptcSplitTyConApp_mayberepSplitTyConApp_maybesplitListTyConApp_maybenewTyConInstRhssplitCastTy_maybetyConBindersTyCoBinders mkCoercionTyisCoercionTy_maybestripCoercionTymkTyCoInvForAllTy mkInfForAllTymkTyCoInvForAllTysmkInfForAllTysmkSpecForAllTymkSpecForAllTysmkVisForAllTysmkTyConBindersPreferAnonsplitForAllTyssplitForAllTysReqsplitForAllTysInvis isForAllTy isForAllTy_ty isForAllTy_coisPiTyisFunTy splitForAllTy dropForAllssplitForAllTy_maybesplitForAllTy_ty_maybesplitForAllTy_co_maybesplitPiTy_maybe splitPiTy splitPiTyssplitForAllVarBndrsinvisibleTyBndrCountsplitPiTysInvisiblesplitPiTysInvisibleNfilterOutInvisibleTypesfilterOutInferredTypespartitionInvisibles tyConArgFlags appTyArgFlagsisTauTy isAtomicTy mkAnonBinderisAnonTyCoBindertyCoBinderVar_maybetyCoBinderType tyBinderTypebinderRelevantType_maybemkFamilyTyConApp coAxNthLHS isFamFreeTy isCoVarType buildSynTyConisLiftedType_maybeisUnliftedTypemightBeUnliftedTypeisRuntimeRepKindedTydropRuntimeRepArgsgetRuntimeRep_maybe getRuntimeRepisUnboxedTupleTypeisUnboxedSumType isAlgTypeisDataFamilyAppType isStrictTypeisPrimitiveTypeisValidJoinPointTypeseqTypeseqTypeseqTypeeqTypeXeqTypes eqVarBndrs nonDetCmpTypenonDetCmpTypesnonDetCmpTypeXnonDetCmpTypesX nonDetCmpTctypeKind tcTypeKindtcIsConstraintKindtcIsLiftedTypeKindtcIsRuntimeTypeKindtcReturnsConstraintKind isTypeLevPolyresultIsLevPolyoccCheckExpand tyConsOfTypesynTyConResKindsplitVisVarsOfTypesplitVisVarsOfTypes isKindLevPolyclassifiesTypeWithValuestyConAppNeedsKindSig unrestrictedlineartymultirrelevantMultmkScaled scaledSetisManyDataConTyisOneDataConTy isLinearType$fEqTypeOrdering$fOrdTypeOrdering$fEnumTypeOrdering$fBoundedTypeOrdering LitNumType LitNumInteger LitNumNatural LitNumInt LitNumInt64 LitNumWord LitNumWord64LiteralLitChar LitNumber LitString LitNullAddr LitRubbishLitFloat LitDoubleLitLabellitNumIsSignedmkLitNumberWraplitNumCheckRange mkLitNumbermkLitInt mkLitIntWrapmkLitIntUnchecked mkLitIntWrapC mkLitWord mkLitWordWrapmkLitWordWrapC mkLitInt64mkLitInt64Wrap mkLitWord64mkLitWord64Wrap mkLitFloat mkLitDouble mkLitChar mkLitString mkLitInteger mkLitNatural inCharRange isZeroLitlitValueisLitValue_maybe mapLitValue isLitValue word2IntLit int2WordLit narrowLit narrow8IntLitnarrow16IntLitnarrow32IntLitnarrow8WordLitnarrow16WordLitnarrow32WordLit char2IntLit int2CharLit float2IntLit int2FloatLit double2IntLit int2DoubleLitfloat2DoubleLitdouble2FloatLit nullAddrLit rubbishLit litIsTrivial litIsDupable litFitsInChar litIsLifted literalTypeabsentLiteralOf pprLiteral$fBinaryLitNumType $fOrdLiteral $fEqLiteral$fOutputableLiteral$fBinaryLiteral $fDataLiteral$fDataLitNumType$fEnumLitNumType$fEqLitNumType$fOrdLitNumTypeGenMap LiteralMapListMapMaybeMapTrieMapKeyemptyTMlookupTMalterTMmapTMfoldTMXTinsertTMdeleteTM>.>|>|>>lkListxtList foldMaybelkGxtGmapGfdG$fTrieMapUniqDFM $fTrieMapMap$fTrieMapIntMap$fTrieMapMaybeMap$fOutputableListMap$fTrieMapListMap$fTrieMapGenMap$fOutputableGenMapFactBaseLabelMapLabelSetLabel mkHooplLabel lookupFact$fOutputableLabel$fUniquableLabel $fShowLabel$fOutputableLabelSet$fIsSetLabelSet$fTrieMapLabelMap$fOutputableLabelMap$fIsMapLabelMap $fEqLabelMap $fOrdLabelMap$fShowLabelMap$fFunctorLabelMap$fFoldableLabelMap$fTraversableLabelMap $fEqLabelSet $fOrdLabelSet$fShowLabelSet$fMonoidLabelSet$fSemigroupLabelSet $fEqLabel $fOrdLabelGraph'GNilGUnitGManyNonLocal entryLabel successorsBody emptyBodybodyListaddBlockmapGraphmapGraphBlocks labelsDefinedrevPostorderFrom$fNonLocalBlockBlockId mkBlockId OverLitVal HsIntegral HsFractional HsIsString OverLitTc ol_rebindableol_type HsOverLitOverLitol_extol_val ol_witnessHsLitHsChar HsCharPrimHsString HsStringPrimHsInt HsIntPrim HsWordPrim HsInt64Prim HsWord64Prim HsIntegerHsRat HsFloatPrim HsDoublePrimXLitnegateOverLitVal overLitType convertLit pp_st_suffix pmPprHsLithsLitNeedsParenshsOverLitNeedsParens$fOutputableHsLit $fEqHsLit$fOutputableOverLitVal$fOrdOverLitVal$fEqOverLitVal$fOutputableHsOverLit$fOrdHsOverLit $fEqHsOverLit$fDataOverLitVal$fDataOverLitTc pprParendType pprTidiedType pprPrecType pprPrecTypeX pprParendKind pprParendCo pprClassPredpprThetapprParendThetapprThetaArrowTy pprSigmaType pprForAll pprUserForAll pprTCvBndrs pprTCvBndr pprTyVars debugPprType pprDataCons pprTypeApppprWithExplicitKindsWhen pprWithTYPEpprSourceTyConmkPatSyn patSynIsInfix patSynArgspatSynFieldLabelspatSynFieldTypepatSynUnivTyVarBinderspatSynExTyVarBinders patSynSigBndr patSynSig patSynMatcher patSynBuilderupdatePatSynIdspatSynInstResTy $fDataPatSyn$fOutputableBndrPatSyn$fOutputablePatSyn$fNamedThingPatSyn$fUniquablePatSyn $fEqPatSyn IsSubmultSubmultUnknown isMultMul mkMultAdd mkMultMul scaleScaled mkMultSupsubmult$fOutputableIsSubmult$fShowIsSubmult $fEqIsSubmultmkFunctionTypeUsageEnvUsageZeroBottomMUsageaddUsage scaleUsageunitUEzeroUEbottomUEaddUEscaleUEsupUEsupUEsdeleteUElookupUE$fOutputableUsage$fOutputableUsageEnv LiftCoEnvLCNormaliseStepResultNS_DoneNS_AbortNS_StepNormaliseStepper coVarNamesetCoVarUnique setCoVarNameetaExpandCoAxBranch pprCoAxiompprCoAxBranchUserpprCoAxBranchLHS pprCoAxBranchtidyCoAxBndrsForUser decomposeCodecomposeFunCogetCoVar_maybesplitTyConAppCo_maybemultToCosplitAppCo_maybesplitFunCo_maybesplitForAllCo_maybesplitForAllCo_ty_maybesplitForAllCo_co_maybe coVarTypes coVarKindisReflCoVar_maybe isGReflMCoisGReflCo_maybeisReflCo_maybeisReflexiveCo_maybecoToMCo mkRepReflComkAppCos mkForAllCosmkHomoForAllCos mkCoVarCos isCoVar_maybe mkAxInstComkUnbranchedAxInstCo mkAxInstRHSmkUnbranchedAxInstRHS mkAxInstLHSmkUnbranchedAxInstLHSmkHoleCo mkTransMCo nthCoRolemkGReflRightCo mkGReflLeftComkCoherenceLeftComkCoherenceRightCo downgradeRolesetNominalRole_maybe tyConRolesXtyConRolesRepresentationalnthRoleltRolepromoteCoercioncastCoercionKind2castCoercionKind1castCoercionKindmkFamilyTyConAppComkPiCosmkPiComkCoCastinstNewTyCon_maybe mapStepResultcomposeSteppersunwrapNewTypeSteppertopNormaliseTypeXtopNormaliseNewType_maybe eqCoercion eqCoercionXliftCoSubstWithExliftCoSubstWithemptyLiftingContextmkSubstLiftingContextextendLiftingContextextendLiftingContextAndInScopezapLiftingContextsubstForAllCoBndrUsingLCliftCoSubstTyVarliftCoSubstVarBndrUsing isMappedByLC substLeftCo substRightCo swapLiftCoEnv lcSubstLeft lcSubstRightliftEnvSubstLeftliftEnvSubstRight lcTCvSubst lcInScopeSet coercionKindscoercionKindRole coercionRolemkHeteroCoercionType mkPrimEqPredmkPrimEqPredRolemkHeteroPrimEqPredmkHeteroReprPrimEqPredmkReprPrimEqPred buildCoercionsimplifyArgsWorkerbadCoercionHolebadCoercionHoleCo$fOutputableLiftingContextBindFlagBindMeSkolem UnifyResultM Unifiable MaybeApart SurelyApart UnifyResult tcMatchTy tcMatchTyX_BM tcMatchTyKi tcMatchTyX tcMatchTys tcMatchTyKis tcMatchTysX tcMatchTyKisXruleMatchTyKiX roughMatchTcsinstanceCantMatchtypesCantMatch tcUnifyTy tcUnifyTyKitcUnifyTyWithTFs tcUnifyTys tcUnifyTyKis tcUnifyTysFG liftCoMatch$fOutputableUnifyResultM$fMonadPlusUnifyResultM$fAlternativeUnifyResultM$fMonadUnifyResultM$fApplicativeUnifyResultM $fMonadFailUM $fMonadPlusUM$fAlternativeUM $fMonadUM$fApplicativeUM $fFunctorUM $fEqBindFlag$fFunctorUnifyResultMEqRelNomEqReprEqPred ClassPredEqPred IrredPred ForAllPredclassifyPredType mkClassPredisDictTygetClassPredTysgetClassPredTys_maybe classMethodTyclassMethodInstTy eqRelRole getEqPredTysgetEqPredTys_maybe getEqPredRole predTypeEqRel isEvVarType isEqPredClass isClassPredisEqPred isEqPrimPred isCTupleClass isIPTyCon isIPClass isIPLikePredhasIPSuperClassesisEvVarisDictId$fOutputableEqRel $fEqEqRel $fOrdEqRel FilesToClean ftcGhcSessionftcCurrentModule CompilerInfoGCCClang AppleClang AppleClang51 UnknownCC LinkerInfoGnuLDGnuGoldLlvmLLDDarwinLD SolarisLDAixLD UnknownLDPkgDbRef GlobalPkgDb UserPkgDb PkgDbPathFlagSpec flagSpecName flagSpecFlagflagSpecActionflagSpecGhcMode TurnOnFlagFlushErrFlushOut LogAction FatalMessagerRtsOptsEnabled RtsOptsNone RtsOptsIgnoreRtsOptsIgnoreAllRtsOptsSafeOnly RtsOptsAll DynLibLoader DeployableSystemDependent PackageDBFlag PackageDBNoUserPackageDBNoGlobalPackageDBClearPackageDBs PackageFlag ExposePackage HidePackage TrustFlag TrustPackageDistrustPackageIgnorePackageFlag IgnorePackage ModRenamingmodRenamingWithImplicit modRenamings PackageArg UnitIdArgGhcLinkNoLink LinkBinary LinkInMemory LinkDynLib LinkStaticLibGhcMode CompManagerOneShotMkDepend HscTargetHscCHscAsmHscLlvmHscInterpreted HscNothing LlvmConfig llvmTargets llvmPasses LlvmTarget lDataLayoutlCPU lAttributesProfAuto NoProfAuto ProfAutoAll ProfAutoTopProfAutoExports ProfAutoCallsContainsDynFlagsextractDynFlags HasDynFlags getDynFlags CfgWeights CFGWeights uncondWeightcondBranchWeight switchWeight callWeightlikelyCondWeightunlikelyCondWeightinfoTablePenalty backEdgeBonusghcModeghcLink hscTargetghcNameVersion fileSettings toolSettings platformMiscplatformConstants rawSettings llvmConfig verbosityoptLevel debugLevel simplPhasesmaxSimplIterations ruleCheck inlineCheckstrictnessBefore parMakeCountenableTimeStats ghcHeapSizemaxRelevantBindsmaxValidHoleFitsmaxRefHoleFitsrefLevelHoleFitsmaxUncoveredPatternsmaxPmCheckModelssimplTickFactorspecConstrThresholdspecConstrCountspecConstrRecursivebinBlobThresholdliberateCaseThreshold floatLamArgsliftLamsRecArgsliftLamsNonRecArgs liftLamsKnowncmmProcAlignment historySize importPaths mainModIs mainFunIsreductionDepthsolverIterationshomeUnitInstanceOfIdhomeUnitInstantiationsways splitInfo objectDirdylibInstallNamehiDirhieDirstubDirdumpDir objectSufhcSufhiSufhieSufcanGenerateDynamicToo dynObjectSufdynHiSuf outputFile dynOutputFileoutputHi dynLibLoader dumpPrefixdumpPrefixForceldInputs includePaths libraryPathsframeworkPathscmdlineFrameworksrtsOptsrtsOptsEnabledrtsOptsSuggestionshpcDirpluginModNamespluginModNameOptsfrontendPluginOpts cachedPlugins staticPluginshooks depMakefiledepIncludePkgDepsdepIncludeCppDepsdepExcludeMods depSuffixespackageDBFlagsignorePackageFlags packageFlagspluginPackageFlags trustFlags packageEnv unitDatabases filesToClean dirsToCleannextTempSuffixgeneratedDumps dumpFlags generalFlags warningFlagsfatalWarningFlagslanguage safeHaskell safeInfer safeInferredthOnLoc newDerivOnLocoverlapInstLocincoherentOnLoc pkgTrustOnLoc warnSafeOnLocwarnUnsafeOnLoctrustworthyOnLoc extensionsextensionFlagsufCreationThresholdufUseThresholdufFunAppDiscountufDictDiscountufDearOpufVeryAggressive maxWorkerArgs ghciHistSize log_action dump_action trace_actionflushOutflushErrghcVersionFilehaddockOptions ghciScripts pprUserLengthpprCols useUnicodeuseColor canUseColor colSchemeprofAutointeractivePrintnextWrapperNum sseVersion bmiVersionavxavx2avx512cdavx512eravx512favx512pfrtldInfortccInfomaxInlineAllocSizemaxInlineMemcpyInsnsmaxInlineMemsetInsns reverseErrors maxErrors initialUniqueuniqueIncrement cfgWeightInfoSafeHaskellModeSf_None Sf_UnsafeSf_TrustworthySf_SafeSf_SafeInferred Sf_Ignore IncludeSpecsincludePathsQuoteincludePathsGlobaladdGlobalIncludeaddQuoteIncludeflattenIncludessettings programNameprojectVersion ghcUsagePath ghciUsagePathtopDirtmpDirextraGccViaCFlagsglobalPackageDatabasePathpgm_Lpgm_Ppgm_Fpgm_cpgm_apgm_lpgm_lmpgm_dllpgm_T pgm_windres pgm_libtoolpgm_lccpgm_ar pgm_otoolpgm_install_name_tool pgm_ranlibpgm_lopgm_lcpgm_iopt_Lopt_Popt_P_signatureopt_Fopt_copt_cxxopt_aopt_lopt_lm opt_windresopt_lccopt_loopt_lcopt_iversionedAppDirversionedFilePathisObjectTargettargetRetainsAllBindings isOneShotisNoLinkpackageFlagsChangeddefaultObjectTargetpositionIndependentwhenGeneratingDynamicTooifGeneratingDynamicToowhenCannotGenerateDynamicToodynamicTooMkDynamicDynFlagsdynamicOutputFile initDynFlagsdefaultDynFlags defaultWaysdefaultFatalMessagerdefaultLogActiondefaultLogActionHPrintDocdefaultLogActionHPutStrDocdefaultFlushOutdefaultFlushErrlanguageExtensionshasNoStateHackhasNoOptCoerciondoptdopt_set dopt_unsetgoptgopt_set gopt_unsetwoptwopt_set wopt_unset wopt_fatalwopt_set_fatalwopt_unset_fatalxoptxopt_set xopt_unsetxopt_set_unlessExplSpeclang_setdynFlagDependenciespackageTrustOn safeHaskellOnsafeHaskellModeEnabledsafeLanguageOn safeInferOn safeImportsOnsafeDirectImpsReqsafeImplicitImpsReq unsafeFlagsunsafeFlagsForInfergetOpts getVerbFlags mkHomeModule isHomeModulehomeUnitaddPluginModuleName updOptLevelparseDynamicFlagsCmdLineparseDynamicFilePragmaparseDynamicFlagsFull putLogMsgallNonDeprecatedFlagsflagsAll flagsDynamic flagsPackageflagsForCompletionturnOnturnOff wWarningFlagsfFlags fLangFlagssupportedLanguagesAndExtensionsxFlags impliedGFlagsimpliedOffGFlags impliedXFlags warningGroupswarningHierarchiesglasgowExtsFlagsaddWay'setGeneralFlag'unSetGeneralFlag' setUnitIdcanonicalizeHomeModulecanonicalizeModuleIfHomesetFlagsFromEnvFile setTmpDir picCCOptspicPOpts compilerInfocONTROL_GROUP_CONST_291 sTD_HDR_SIZE pROF_HDR_SIZE bLOCK_SIZEbLOCKS_PER_MBLOCKtICKY_BIN_COUNToFFSET_StgRegTable_rR1oFFSET_StgRegTable_rR2oFFSET_StgRegTable_rR3oFFSET_StgRegTable_rR4oFFSET_StgRegTable_rR5oFFSET_StgRegTable_rR6oFFSET_StgRegTable_rR7oFFSET_StgRegTable_rR8oFFSET_StgRegTable_rR9oFFSET_StgRegTable_rR10oFFSET_StgRegTable_rF1oFFSET_StgRegTable_rF2oFFSET_StgRegTable_rF3oFFSET_StgRegTable_rF4oFFSET_StgRegTable_rF5oFFSET_StgRegTable_rF6oFFSET_StgRegTable_rD1oFFSET_StgRegTable_rD2oFFSET_StgRegTable_rD3oFFSET_StgRegTable_rD4oFFSET_StgRegTable_rD5oFFSET_StgRegTable_rD6oFFSET_StgRegTable_rXMM1oFFSET_StgRegTable_rXMM2oFFSET_StgRegTable_rXMM3oFFSET_StgRegTable_rXMM4oFFSET_StgRegTable_rXMM5oFFSET_StgRegTable_rXMM6oFFSET_StgRegTable_rYMM1oFFSET_StgRegTable_rYMM2oFFSET_StgRegTable_rYMM3oFFSET_StgRegTable_rYMM4oFFSET_StgRegTable_rYMM5oFFSET_StgRegTable_rYMM6oFFSET_StgRegTable_rZMM1oFFSET_StgRegTable_rZMM2oFFSET_StgRegTable_rZMM3oFFSET_StgRegTable_rZMM4oFFSET_StgRegTable_rZMM5oFFSET_StgRegTable_rZMM6oFFSET_StgRegTable_rL1oFFSET_StgRegTable_rSpoFFSET_StgRegTable_rSpLimoFFSET_StgRegTable_rHpoFFSET_StgRegTable_rHpLimoFFSET_StgRegTable_rCCCSoFFSET_StgRegTable_rCurrentTSO"oFFSET_StgRegTable_rCurrentNurseryoFFSET_StgRegTable_rHpAllocoFFSET_stgEagerBlackholeInfooFFSET_stgGCEnter1oFFSET_stgGCFunoFFSET_Capability_roFFSET_bdescr_startoFFSET_bdescr_freeoFFSET_bdescr_blocksoFFSET_bdescr_flagssIZEOF_CostCentreStack oFFSET_CostCentreStack_mem_alloc oFFSET_CostCentreStack_scc_countoFFSET_StgHeader_ccsoFFSET_StgHeader_ldvwsIZEOF_StgSMPThunkHeaderoFFSET_StgEntCounter_allocsoFFSET_StgEntCounter_allocd oFFSET_StgEntCounter_registeredpoFFSET_StgEntCounter_link oFFSET_StgEntCounter_entry_countsIZEOF_StgUpdateFrame_NoHdrsIZEOF_StgMutArrPtrs_NoHdroFFSET_StgMutArrPtrs_ptrsoFFSET_StgMutArrPtrs_sizesIZEOF_StgSmallMutArrPtrs_NoHdroFFSET_StgSmallMutArrPtrs_ptrssIZEOF_StgArrBytes_NoHdroFFSET_StgArrBytes_bytesoFFSET_StgTSO_alloc_limitoFFSET_StgTSO_cccsoFFSET_StgTSO_stackobjoFFSET_StgStack_spoFFSET_StgStack_stackoFFSET_StgUpdateFrame_updateeoFFSET_StgFunInfoExtraFwd_aritysIZEOF_StgFunInfoExtraRevoFFSET_StgFunInfoExtraRev_aritymAX_SPEC_SELECTEE_SIZEmAX_SPEC_AP_SIZEmIN_PAYLOAD_SIZE mIN_INTLIKE mAX_INTLIKE mIN_CHARLIKE mAX_CHARLIKEmUT_ARR_PTRS_CARD_BITSmAX_Vanilla_REG mAX_Float_REGmAX_Double_REG mAX_Long_REG mAX_XMM_REGmAX_Real_Vanilla_REGmAX_Real_Float_REGmAX_Real_Double_REGmAX_Real_XMM_REGmAX_Real_Long_REGrESERVED_C_STACK_BYTESrESERVED_STACK_WORDSaP_STACK_SPLIM cINT_SIZE cLONG_SIZEcLONG_LONG_SIZEbITMAP_BITS_SHIFTtAG_BITSdYNAMIC_BY_DEFAULT lDV_SHIFTiLDV_CREATE_MASKiLDV_STATE_CREATEiLDV_STATE_USE bLOCK_SIZE_W wordAlignment mAX_PTR_TAGmakeDynFlagsConsistentsetUnsafeGlobalDynFlags isSseEnabled isSse2EnabledisSse4_2Enabled isAvxEnabled isAvx2EnabledisAvx512cdEnabledisAvx512erEnabledisAvx512fEnabledisAvx512pfEnabled isBmiEnabled isBmi2EnabledsccProfilingEnabledemptyFilesToCleaninitDefaultSDocContext$fOutputableSafeHaskellMode$fShowSafeHaskellMode$fOutputableGhcMode$fOutputablePackageArg$fOutputableModRenaming$fOutputablePackageFlag$fOutputableOnOff$fHasDynFlagsExceptT$fHasDynFlagsMaybeT$fHasDynFlagsReaderT$fHasDynFlagsWriterT$fEqCompilerInfo$fEqLinkerInfo$fEqPackageDBFlag $fEqPkgDbRef$fEqDeprecation$fOrdDeprecation $fEqOnOff $fShowOnOff$fShowRtsOptsEnabled$fEqDynLibLoader$fEqPackageFlag $fEqTrustFlag$fEqIgnorePackageFlag$fEqModRenaming$fEqPackageArg$fShowPackageArg $fEqGhcLink $fShowGhcLink $fEqGhcMode $fEqHscTarget$fShowHscTarget $fEqProfAuto$fEnumProfAuto$fEqSafeHaskellMode$fShowIncludeSpecsWarnMsgErrDocerrDocImportant errDocContexterrDocSupplementaryErrMsg errMsgSpan errMsgContext errMsgDocerrMsgSeverity errMsgReason ErrorMessagesWarningMessagesMessagesValidityIsValidNotValidisValidandValidallValid getInvalidsorValid unionMessageserrDoc pprMessageBagmakeIntoWarningmkErrDoc mkLongErrMsgmkErrMsg mkPlainErrMsg mkLongWarnMsg mkWarnMsgmkPlainWarnMsg emptyMessagesisEmptyMessages errorsFoundwarningsToMessagesprintBagOfErrors formatErrDocpprErrMsgBagWithLoc pprLocErrMsgghcExitdoIfSet doIfSet_dyn dumpIfSet dumpIfSet_dyndumpIfSet_dyn_printer touchDumpFiledumpOptionsFromFlagerrorMsg warningMsg fatalErrorMsgfatalErrorMsg''compilationProgressMsgshowPass withTiming withTimingDwithTimingSilentwithTimingSilentD debugTraceMsgputMsgprintInfoForUserprintOutputForUserlogInfo logOutputprettyPrintGhcErrorsisWarnMsgFataltraceCmd dumpAction traceAction$fToJsonSeverity $fShowErrMsg$fShowDumpFormat$fEqDumpFormat$fEqPrintTimings$fShowPrintTimings$fShowSeverity ShHoleSubstModuleSuggestionSuggestVisible SuggestHidden LookupResult LookupFoundLookupMultiple LookupHiddenLookupUnusableLookupNotFoundUnusableUnitReasonIgnoredWithFlagBrokenDependenciesCyclicDependenciesIgnoredDependenciesShadowedDependenciesunitDatabasePathunitDatabaseUnits unitInfoMappreloadClosurepackageNameMapwireMap unwireMap preloadUnits explicitUnitsmoduleNameProvidersMappluginModuleNameProvidersMaprequirementContextallowVirtualUnits ModuleOrigin ModHidden ModUnusable ModOrigin fromOrigUnitfromExposedReexportfromHiddenReexportfromPackageFlag lookupUnit lookupUnit' lookupUnitId lookupUnitId'unsafeLookupUnitunsafeLookupUnitIdlookupPackageNamesearchPackageId listUnitInfo initUnitsreadUnitDatabases getUnitDbRefsresolveUnitDatabasereadUnitDatabasehomeUnitIsIndefinitehomeUnitIsDefinitepprFlag pprReason unwireUnitgetUnitIncludePathcollectIncludeDirsgetUnitLibraryPathcollectLibraryPathsgetUnitLinkOptscollectLinkOptscollectArchivesgetLibs packageHsLibsgetUnitExtraCcOptsgetUnitFrameworkPathgetUnitFrameworkslookupModuleInAllUnitslookupModuleWithSuggestions!lookupPluginModuleWithSuggestionslistVisibleModuleNamesgetPreloadUnitsAndpprUnitspprUnitsSimple pprModuleMap improveUnitinstUnitToUnitrenameHoleModulerenameHoleUnitrenameHoleModule'renameHoleUnit'instModuleToModule$fMonoidUnitVisibility$fSemigroupUnitVisibility$fOutputableUnitVisibility$fOutputableUnusableUnitReason$fMonoidModuleOrigin$fSemigroupModuleOrigin$fOutputableModuleOriginTempFileLifetimeTFL_CurrentModuleTFL_GhcSession cleanTempDirscleanTempFilesaddFilesToCleanchangeTempFilesLifetime newTempName newTempDirnewTempLibNamewithSystemTempDirectorywithTempDirectory$fShowTempFileLifetimeMonadPaddError addWarning addFatalErrorgetBit addAnnotationExtBitsFfiBitInterruptibleFfiBit CApiFfiBit ArrowsBitThBit ThQuotesBitIpBitOverloadedLabelsBitExplicitForallBit BangPatBitPatternSynonymsBit HaddockBit MagicHashBitRecursiveDoBitQualifiedDoBitUnicodeSyntaxBitUnboxedTuplesBitUnboxedSumsBitDatatypeContextsBitMonadComprehensionsBitTransformComprehensionsBitQqBitRawTokenStreamBitAlternativeLayoutRuleBitALRTransitionalBitRelaxedLayoutBitNondecreasingIndentationBitSafeHaskellBitTraditionalRecordSyntaxBitExplicitNamespacesBit LambdaCaseBitBinaryLiteralsBitNegativeLiteralsBitHexFloatLiteralsBitStaticPointersBitNumericUnderscoresBit StarIsTypeBitBlockArgumentsBitNPlusKPatternsBitDoAndIfThenElseBit MultiWayIfBit GadtSyntaxBitImportQualifiedPostBitLinearTypesBitNoLexicalNegationBit InRulePragBitInNestedCommentBitUsePosPragsBitPunPPStatebufferoptionsmessages tab_first tab_countlast_tklast_loclast_lenloccontext lex_statesrcfilesalr_pending_implicit_tokensalr_next_token alr_last_loc alr_contextalr_expecting_ocurlyalr_justClosedExplicitLetBlock annotationseof_pos comment_qannotations_comments hdk_comments HdkCommentHdkCommentNextHdkCommentPrevHdkCommentNamedHdkCommentSection ParserFlags pWarningFlags pHomeUnitId pExtsBitmap ParseResultPOkPFailedTokenITasITcaseITclassITdata ITdefault ITderivingITdoITelseIThiding ITforeignITifITimportITinITinfixITinfixlITinfixr ITinstanceITletITmodule ITnewtypeITof ITqualifiedITthenITtypeITwhereITforallITexportITlabel ITdynamicITsafeITinterruptibleITunsafe ITstdcallconv ITccallconv ITcapiconvITprimcallconvITjavascriptcallconvITmdoITfamilyITroleITgroupITbyITusing ITpatternITstaticITstock ITanyclassITviaITunit ITsignature ITdependency ITrequires ITinline_prag ITspec_pragITspec_inline_prag ITsource_prag ITrules_pragITwarning_pragITdeprecated_prag ITline_prag ITcolumn_prag ITscc_pragITgenerated_prag ITunpack_pragITnounpack_prag ITann_pragITcomplete_prag ITclose_pragIToptions_pragITinclude_pragITlanguage_pragITminimal_pragIToverlappable_pragIToverlapping_pragIToverlaps_pragITincoherent_pragITctypeITcomment_line_pragITdotdotITcolonITdcolonITequalITlamITlcaseITvbarITlarrowITrarrowITdarrowITlollyITminus ITprefixminusITbangITtildeITat ITtypeApp ITpercentITstarITdotITbiglamITocurlyITccurly ITvocurly ITvccurlyITobrack ITopabrack ITcpabrackITcbrackIToparenITcparen IToubxparen ITcubxparenITsemiITcomma ITunderscore ITbackquote ITsimpleQuoteITvaridITconidITvarsymITconsymITqvaridITqconid ITqvarsym ITqconsym ITdupipvarid ITlabelvaridITcharITstring ITinteger ITrational ITprimchar ITprimstring ITprimint ITprimword ITprimfloat ITprimdoubleITopenExpQuoteITopenPatQuoteITopenDecQuoteITopenTypQuote ITcloseQuoteITopenTExpQuoteITcloseTExpQuoteITdollarITdollardollar ITtyQuote ITquasiQuote ITqQuasiQuoteITprocITrec IToparenbar ITcparenbar ITlarrowtail ITrarrowtail ITLarrowtail ITRarrowtail ITunknownITeofITdocCommentNextITdocCommentPrevITdocCommentNamed ITdocSection ITdocOptions ITlineCommentITblockCommentfailMsgP failLocMsgP getPStatewithHomeUnitId setSrcLoc getRealSrcLoc setLastToken nextIsEOF pushLexState popLexState getLexState activeContextxtest pragStatemkParserFlags' mkParserFlagsmkPState mkPStatePure appendError appendWarning addAnnsAtgetErrorMessages getMessages popContextpushModuleContext srcParseFaillexerlexerDbglexTokenStreamallocateCommentscommentToAnnotation$fOutputableToken$fMonadP$fApplicativeP $fFunctorP $fMonadPP $fEnumExtBits$fShowHdkComment$fShowLayoutContext $fShowToken IOEnvFailureIOEnvfailM failWithMrunIOEnvfixMtryMtryAllMtryMostMunsafeInterleaveMuninterruptibleMaskM_ newMutVar writeMutVar readMutVar updMutVaratomicUpdMutVaratomicUpdMutVar'getEnvsetEnvupdEnv$fMonadPlusIOEnv$fAlternativeIOEnv$fHasModuleIOEnv$fHasDynFlagsIOEnv$fApplicativeIOEnv$fMonadFailIOEnv $fMonadIOEnv$fExceptionIOEnvFailure$fShowIOEnvFailure$fFunctorIOEnv$fMonadThrowIOEnv$fMonadCatchIOEnv$fMonadMaskIOEnv$fMonadIOIOEnvStrictnessMark MarkedStrictNotMarkedStrictSrcUnpackedness SrcUnpack SrcNoUnpack NoSrcUnpack SrcStrictnessSrcLazy SrcStrict NoSrcStrict HsImplBangHsLazyHsStrictHsUnpack HsSrcBang NoDataConRepDCR dcr_wrap_id dcr_boxer dcr_arg_tys dcr_stricts dcr_bangsmkEqSpec eqSpecTyVar eqSpecType eqSpecPair eqSpecPreds substEqSpec filterEqSpeceqHsBangisBanged isSrcStrict isSrcUnpackedisMarkedStrict mkDataCon dataConTag dataConTagZdataConOrigTyCondataConRepTypedataConIsInfixdataConUnivTyVarsdataConUnivAndExTyCoVars dataConEqSpec dataConTheta dataConWorkIddataConWrapId_maybe dataConWrapIddataConImplicitTyThingsdataConFieldTypedataConFieldType_maybedataConSrcBangsdataConRepArityisNullarySrcDataConisNullaryRepDataCondataConRepStrictnessdataConImplBangs dataConBoxerdataConInstSigdataConOrigResTydataConWrapperTypedataConNonlinearTypedataConDisplayTypedataConInstArgTysdataConOrigArgTysdataConOtherThetadataConRepArgTysdataConIdentityisTupleDataConisUnboxedTupleConisVanillaDataConspecialPromotedDc classDataCondataConCannotMatchdataConUserTyVarsArePermutedpromoteDataConsplitDataProductType_maybe$fOutputableHsImplBang$fBinarySrcStrictness$fOutputableSrcStrictness$fBinarySrcUnpackedness$fOutputableSrcUnpackedness$fOutputableHsSrcBang$fOutputableStrictnessMark$fOutputableEqSpec $fDataDataCon$fOutputableBndrDataCon$fOutputableDataCon$fNamedThingDataCon$fUniquableDataCon $fEqDataCon$fDataHsSrcBang$fEqSrcUnpackedness$fDataSrcUnpackedness$fEqSrcStrictness$fDataSrcStrictness$fDataHsImplBangSlotTyPtrSlotWordSlot Word64Slot FloatSlot DoubleSlot UnaryType NvUnaryType isNvUnaryTypetypePrimRepArgs unwrapTypecountFunRepArgscountConRepArgsisVoidTy ubxSumRepType layoutUbxSum typeSlotTy primRepSlot slotPrimRep typePrimRep typePrimRep1 tyConPrimRep tyConPrimRep1runtimeRepPrimRep primRepToType$fOutputableSlotTy $fEqSlotTy $fOrdSlotTy StrictSigDmdShell BothDmdArgDmdTypeDmdEnv DivergenceDivergesExnOrDivDunno TypeShapeTsFunTsProdTsUnkDemand CleanDemandCountUseDmdUCallUProdUHeadUsedStrDmd getStrDmd getUseDmd peelUseCalladdCaseBndrDmduseCount bothCleanDmd mkHeadStrict mkOnceUsedDmd mkManyUsedDmdevalDmd mkProdDmd mkCallDmd mkCallDmdsmkWorkerDemand cleanEvalDmdcleanEvalProdDmdlubDmdbothDmdstrictApply1Dmd lazyApply1Dmd lazyApply2DmdabsDmdtopDmdbotDmdseqDmd oneifyDmdisTopDmdisAbsDmdisSeqDmd isUsedOnce seqDemand seqDemandList isStrictDmdcleanUseDmd_maybesplitFVssplitProdDmd_maybe trimToType lubDivergencetopDivexnDivbotDiv isDeadEndDiv lubDmdType mkBothDmdArg toBothDmdArg bothDmdType emptyDmdEnv botDmdType nopDmdType dmdTypeDepth seqDmdType splitDmdTydeferAfterPreciseException strictenDmd toCleanDmdpostProcessDmdTypereuseEnvpostProcessUnsat peelCallDmd peelManyCallspeelFV addDemand findIdDemandpprIfaceStrictSigmkStrictSigForAritymkClosedStrictSigsplitStrictSigprependArgsStrictSigetaConvertStrictSigisTopSighasDemandEnvSigstrictSigDmdEnv isDeadEndSigbotSignopSig seqStrictSigdmdTransformSigdmdTransformDataConSigdmdTransformDictSelSig argsOneShotssaturatedByOneShots argOneShots appIsDeadEndzapUsageEnvSigzapUsageDemandzapUsedOnceDemandzapUsedOnceSigstrictifyDictDmd strictifyDmd$fBinaryJointDmd$fOutputableJointDmd $fBinaryStr$fBinaryStrDmd$fOutputableStr$fOutputableStrDmd $fBinaryCount$fOutputableCount$fBinaryUseDmd $fBinaryUse$fOutputableUseDmd$fOutputableUse$fOutputableTypeShape$fBinaryDivergence$fOutputableDivergence$fBinaryDmdType$fOutputableDmdType $fEqDmdType$fBinaryStrictSig$fOutputableStrictSig $fEqStrictSig$fEqDivergence$fShowDivergence $fEqUseDmd $fShowUseDmd$fEqUse $fShowUse $fEqCount $fShowCount $fEqStrDmd $fShowStrDmd$fEqStr $fShowStr $fEqJointDmd$fShowJointDmdWordOffStandardFormInfoNonStandardThunk SelectorThunkApThunkArgDescrArgSpecArgGen ArgUnknownLivenessLambdaFormInfo LFReEntrantLFThunkLFCon LFUnknown LFUnlifted LFLetNoEscape ModuleLFInfosCgInfos cgNonCafs cgLFInfos$fOutputableArgDescr$fOutputableStandardFormInfo$fOutputableLambdaFormInfo$fEqStandardFormInfo $fEqArgDescrConstrDescriptionClosureTypeInfoConstrFunThunk ThunkSelector BlackHole IndStaticIsStaticSMRepHeapRep ArrayPtrsRepSmallArrayPtrsRep ArrayWordsRepStackRepRTSRep StgHalfWordStgWordByteOffroundUpToWords roundUpTo wordsToBytesbytesToWordsRoundUp fromStgWord toStgWordfromStgHalfWord toStgHalfWord halfWordSizehalfWordSizeInBits mkHeapRepmkRTSRep mkStackRep blackHoleRep indStaticRep arrPtrsRepsmallArrPtrsRep arrWordsRep isStaticRep isStackRepisConRep isThunkRepisFunRepisStaticNoCafCon fixedHdrSize fixedHdrSizeW profHdrSizearrWordsHdrSizearrWordsHdrSizeWarrPtrsHdrSizearrPtrsHdrSizeWsmallArrPtrsHdrSizesmallArrPtrsHdrSizeW thunkHdrSizehdrSizehdrSizeW nonHdrSize nonHdrSizeWheapClosureSizeWcard cardRoundUpcardTableSizeBcardTableSizeWrtsClosureType rET_SMALLrET_BIGaRG_GEN aRG_GEN_BIG$fOutputableStgWord$fOutputableStgHalfWord$fOutputableClosureTypeInfo$fOutputableSMRep$fEqStgHalfWord $fEqStgWord $fBitsStgWord conLikeArityconLikeFieldLabelsconLikeInstOrigArgTysconLikeUserTyVarBindersconLikeExTyCoVarsconLikeStupidThetaconLikeWrapId_maybeconLikeImplBangs conLikeResTyconLikeFullSigconLikeFieldTypeconLikesWithFieldsconLikeIsInfix $fDataConLike$fOutputableBndrConLike$fOutputableConLike$fNamedThingConLike$fUniquableConLike $fEqConLikeAnnBind AnnNonRecAnnAltAnnExpr'AnnVarAnnLitAnnAppAnnCastAnnTick AnnCoercionAnnExpr TaggedAlt TaggedArg TaggedExpr TaggedBind TaggedBndrTBCoreAltCoreBindCoreArgCoreExprCoreBndr CoreProgramUnfoldingGuidanceUnfWhen UnfIfGoodArgsUnfNeverug_arity ug_unsat_ok ug_boring_okug_argsug_sizeug_resUnfoldingSource InlineRhs InlineStableInlineCompulsory Unfolding NoUnfolding BootUnfoldingOtherCon DFunUnfolding CoreUnfoldingdf_bndrsdf_condf_argsuf_tmpluf_src uf_is_top uf_is_value uf_is_conlikeuf_is_work_free uf_expandable uf_guidanceIdUnfoldingFun InScopeEnvRuleFunRuleOpts roPlatformroNumConstantFoldingroExcessRationalPrecisionCoreRuleRule BuiltinRuleru_nameru_actru_fnru_roughru_bndrsru_argsru_rhsru_auto ru_origin ru_orphanru_localru_nargsru_tryRuleEnvre_basere_visible_orphsRuleBaseIsOrphan NotOrphanTickishPlacement PlaceRuntime PlaceNonLamPlaceCostCentreTickishScopingNoScope SoftScopeCostCentreScopeTickishProfNoteHpcTick Breakpoint SourceNote profNoteCC profNoteCount profNoteScope tickModuletickId breakpointId breakpointFVs sourceSpan sourceName MOutCoercionOutArgOutAltOutExprOutBind OutCoercionOutKindOutTypeOutBndr InCoercionInArgInAltInExprInBindInKindInTypeInBndrBindNonRecRecAltConDataAltLitAltDEFAULTAltArgExprLitAppLamLetCaseCastTick tickishCounts tickishScopedtickishScopesLiketickishFloatabletickishCanSplit mkNoCount mkNoScope tickishIsCode tickishPlacetickishContainsisOrphan notOrphanchooseOrphanAnchor mkRuleEnv emptyRuleEnv isBuiltinRule isAutoRule ruleArityruleName ruleModuleruleActivation ruleIdName isLocalRule setRuleIdName needSaturated unSaturatedOk boringCxtOkboringCxtNotOk noUnfoldingevaldUnfolding bootUnfolding mkOtherConisStableSourceunfoldingTemplatemaybeUnfoldingTemplate otherConsisValueUnfoldingisEvaldUnfoldingisConLikeUnfoldingisCheapUnfoldingisExpandableUnfoldingexpandUnfolding_maybeisCompulsoryUnfoldingisStableUnfoldinghasSomeUnfoldingisBootUnfoldingneverUnfoldGuidancehasCoreUnfolding canUnfoldcmpAltltAlt cmpAltCon deTagExprmkAppsmkCoApps mkVarAppsmkConAppmkTyApps mkConApp2mkTyArgmkIntLit mkIntLitWrap mkWordLit mkWordLitWrapmkWord64LitWord64mkInt64LitInt64 mkCharLit mkStringLit mkFloatLitmkFloatLitFloat mkDoubleLitmkDoubleLitDoublemkLamsmkLetsmkLet mkLetNonRecmkLetRecmkTyBindmkCoBind varToCoreExprvarsToCoreExprsapplyTypeToArg exprToTypeexprToCoercion_maybe bindersOfbindersOfBinds rhssOfBind rhssOfAlts flattenBindscollectBinderscollectTyBinderscollectTyAndValBinderscollectNBinders collectArgs stripNArgscollectArgsTicks isRuntimeVar isRuntimeArgisValArg isTyCoArgisCoArg isTypeArg valBndrCount valArgCountcollectAnnArgscollectAnnArgsTicks deAnnotate deAnnotate'deAnnAlt deAnnBindcollectAnnBndrscollectNAnnBndrs$fOutputableAltCon $fOrdAltCon$fBinaryIsOrphan$fOutputableTaggedBndr$fEqUnfoldingGuidance$fDataIsOrphan$fEqTickishPlacement$fEqTickishScoping $fDataExpr $fDataBind $fEqTickish $fOrdTickish $fDataTickish $fEqAltCon $fDataAltCon LevityInfo TickBoxOpTickBox TickBoxIdCafInfoMayHaveCafRefs NoCafRefsRuleInfoInlinePragInfo ArityInforuleInfo unfoldingInfoinlinePragInfooccInfostrictnessInfocprInfo demandInfolfInfo RecSelParent RecSelData RecSelPatSyn VanillaIdRecSelId DataConWorkId DataConWrapId ClassOpIdPrimOpIdFCallId TickBoxOpIdCoVarId sel_tycon sel_naughtyisJoinIdDetails_maybe levityInfo oneShotInfo arityInfocafInfo callArityInfo setRuleInfosetInlinePragInfo setOccInfosetUnfoldingInfo setArityInfosetCallArityInfo setCafInfo setLFInfosetOneShotInfo setDemandInfosetStrictnessInfo setCprInfo noCafIdInfo unknownArity ppArityInfo pprStrictness emptyRuleInfoisEmptyRuleInforuleInfoFreeVars ruleInfoRulessetRuleInfoHeadmayHaveCafRefs ppCafInfo zapLamInfo zapDemandInfo zapUsageInfozapUsageEnvInfozapUsedOnceInfozapFragileInfo zapUnfoldingzapTailCallInfozapCallArityInfosetNeverLevPolysetLevityInfoWithTypeisNeverLevPolyIdInfo$fOutputableRecSelParent$fOutputableCafInfo$fOutputableTickBoxOp$fOutputableIdDetails$fOutputableLevityInfo$fEqLevityInfo $fEqCafInfo $fOrdCafInfo$fEqRecSelParentidNameidUniqueidTypeidMult idScaledType scaleIdBy scaleVarBy setIdName setIdUnique setIdType localiseId setIdInfo modifyIdInfomaybeModifyIdInfo mkGlobalIdmkVanillaGlobalmkVanillaGlobalWithInfo mkLocalId mkLocalCoVarmkLocalIdOrCoVarmkLocalIdWithInfomkExportedLocalIdmkExportedVanillaId mkSysLocalmkSysLocalOrCoVar mkSysLocalMmkSysLocalOrCoVarM mkUserLocalmkUserLocalOrCoVar mkWorkerIdmkTemplateLocalmkScaledTemplateLocalmkTemplateLocalsmkTemplateLocalsNumrecordSelectorTyConisRecordSelectorisDataConRecordSelectorisPatSynRecordSelectorisNaughtyRecordSelectorisClassOpId_maybe isPrimOpIdisDFunIdisPrimOpId_maybe isFCallIdisFCallId_maybeisDataConWorkIdisDataConWorkId_maybeisDataConWrapIdisDataConWrapId_maybeisDataConId_maybeisJoinIdisJoinId_maybe idDataCon hasNoBinding isImplicitIdidIsFrom isDeadBinder idJoinArityasJoinId zapJoinIdasJoinId_maybeidArity setIdArity idCallAritysetIdCallArity idFunRepArity isDeadEndId idStrictnesssetIdStrictness idCprInfo setIdCprInfozapIdStrictness isStrictId idUnfoldingrealIdUnfoldingsetIdUnfolding idDemandInfosetIdDemandInfosetCaseBndrEvaldidSpecialisation idCoreRules idHasRulessetIdSpecialisation idCafInfo setIdCafInfoidLFInfo_maybe setIdLFInfo idOccInfo setIdOccInfo zapIdOccInfoidInlinePragmasetInlinePragmamodifyInlinePragmaidInlineActivationsetInlineActivationidRuleMatchInfo isConLikeId idOneShotInfoidStateHackOneShotInfo isOneShotBndrstateHackOneShot typeOneShotisStateHackTypeisProbablyOneShotLambdasetOneShotLambdaclearOneShotLambdasetIdOneShotInfoupdOneShotInfo zapLamIdInfozapFragileIdInfozapIdDemandInfozapIdUsageInfozapIdUsageEnvInfozapIdUsedOnceInfozapIdTailCallInfozapStableUnfoldingtransferPolyIdInfoisNeverLevPolyId mkUnfoldingmkInlineUnfolding CoreStatsCScs_tmcs_tycs_cocs_vbcs_jbcoreBindsStats exprStats coreBindsSizeexprSize$fOutputableCoreStats megaSeqIdInfo seqRuleInfoseqRulesseqExprseqExprsseqBinds seqUnfoldingpprCoreBindingspprCoreBindingpprCoreBindingsWithSizepprCoreBindingWithSize pprParendExpr pprCoreExprpprOptCo pprCoreAltpprRules$fOutputableTickish$fOutputableCoreRule$fOutputableUnfolding$fOutputableUnfoldingSource$fOutputableUnfoldingGuidance$fOutputableIdInfo$fOutputableBndrTaggedBndr$fOutputableBndrVar$fOutputableExpr$fOutputableBindCmEnv LooseTypeMapTypeMaplkDNamedxtDNamed lookupCoreMap extendCoreMap foldCoreMap emptyCoreMap foldTypeMap emptyTypeMap lookupTypeMap extendTypeMaplookupTypeMapWithScopeextendTypeMapWithScopemkDeBruijnContext lookupCME lkDFreeVar xtDFreeVar$fTrieMapTyLitMap $fEqDeBruijn $fEqDeBruijn0 $fEqDeBruijn1 $fEqDeBruijn2 $fEqDeBruijn3 $fEqDeBruijn4$fTrieMapVarMap$fTrieMapBndrMap$fTrieMapTypeMapX$fTrieMapLooseTypeMap$fTrieMapTypeMap$fTrieMapCoercionMapX$fTrieMapCoercionMap$fTrieMapAltMap$fTrieMapCoreMapX$fOutputableCoreMap$fTrieMapCoreMap FamInstMatch fim_instancefim_tysfim_cosInjectivityCheckResultInjectivityAcceptedInjectivityUnified FamInstEnvs FamInstEnv FamFlavor SynFamilyInstDataFamilyInstFamInstfi_axiom fi_flavorfi_famfi_tcsfi_tvsfi_cvsfi_tysfi_rhs famInstAxiom famInstRHS famInstTyConfamInstsRepTyConsfamInstRepTyCon_maybedataFamInstRepTyCon pprFamInst pprFamInstsmkImportedFamInstemptyFamInstEnvsemptyFamInstEnvfamInstEnvEltsfamInstEnvSizefamilyInstancesextendFamInstEnvListextendFamInstEnvinjectiveBranches mkCoAxBranchmkBranchedCoAxiommkUnbranchedCoAxiommkSingleCoAxiommkNewTypeCoAxiomlookupFamInstEnvByTyConlookupFamInstEnvlookupFamInstEnvConflicts$lookupFamInstEnvInjectivityConflicts isDominatedByreduceTyFamApp_maybeapartnessChecktopNormaliseTypetopNormaliseType_maybenormaliseTcApptopReduceTyFamApp_maybe normaliseType flattenTys$fOutputableFamInst$fNamedThingFamInst$fOutputableFamilyInstEnv$fOutputableFamInstMatch$fApplicativeNormM $fMonadNormM$fFunctorNormM wiredInTyConsmkWiredInTyConNamemkWiredInIdName eqTyConName eqTyCon_RDR heqTyConNamecoercibleTyConName charTyConName intTyConName boolTyConName listTyConNamenilDataConNameconsDataConNamemaybeTyConNamenothingDataConNamejustDataConName wordTyConNameword8TyConNamefloatTyConNamedoubleTyConNameanyTyConanyTymakeRecoveryTyConconstraintKindTyConNameliftedTypeKindTyConNamemultiplicityTyConNameoneDataConNamemanyDataConName boolTyCon_RDR false_RDRtrue_RDR intTyCon_RDR charTyCon_RDRstringTyCon_RDRintDataCon_RDR listTyCon_RDRconsDataCon_RDRtypeNatKindContypeSymbolKindConconstraintKindTyContypeToTypeKindisBuiltInOcc_maybe mkTupleStrcTupleTyConNamecTupleTyConNamesisCTupleTyConNamecTupleTyConNameArity_maybecTupleDataConNamecTupleDataConNames tupleTyConpromotedTupleDataCon tupleDataContupleDataConName unitTyCon unitTyConKey unitDataCon unitDataConId pairTyConunboxedUnitTyConunboxedUnitDataConsumTyCon sumDataConunboxedSumKindeqTyConeqClass eqDataConheqClass heqDataConcoercibleClasscoercibleDataCon oneDataCon manyDataConunrestrictedFunTyConNamesumRepDataConTyConliftedRepDataCon liftedRepTyboxingDataCon_maybecharTy charTyCon charDataConstringTyintTyintTyCon intDataConwordTy wordTyCon wordDataConword8Ty word8TyCon word8DataConfloatTy floatTyCon floatDataCondoubleTy doubleTyCon doubleDataConboolTy boolTyCon falseDataCon trueDataConfalseDataConId trueDataConId orderingTyCon ordLTDataCon ordEQDataCon ordGTDataConordLTDataConIdordEQDataConIdordGTDataConIdmkListTy nilDataCon consDataCon maybeTyConnothingDataCon justDataCon mkTupleTy mkTupleTy1mkSumTypromotedTrueDataConpromotedFalseDataConpromotedNothingDataConpromotedJustDataConpromotedLTDataConpromotedEQDataConpromotedGTDataConpromotedConsDataConpromotedNilDataConintegerTyConNameintegerISDataConNameintegerIPDataConNameintegerINDataConName integerTyConintegerISDataConintegerIPDataConintegerINDataConnaturalTyConNamenaturalNSDataConNamenaturalNBDataConName naturalTyConnaturalNSDataConnaturalNBDataCon NameCachensUniqsnsNames OrigNameCachelookupOrigNameCacheextendOrigNameCacheextendNameCache initNameCache ShowHowMuch ShowHeaderShowSome ShowIfaceAltPprShowSub ss_how_much ss_forall IfaceJoinInfoIfaceNotJoinPointIfaceJoinPoint IfaceLetBndr IfLetBndr IfaceBinding IfaceNonRecIfaceRec IfaceConAlt IfaceDefault IfaceDataAlt IfaceLitAltIfaceAlt IfaceTickish IfaceHpcTickIfaceSCC IfaceSource IfaceExprIfaceLclIfaceExtIfaceCo IfaceTupleIfaceLamIfaceApp IfaceCase IfaceECaseIfaceLet IfaceCastIfaceLit IfaceFCall IfaceTick IfaceLFInfo IfLFReEntrant IfLFThunkIfLFCon IfLFUnknown IfLFUnliftedIfaceIdDetails IfVanillaId IfRecSelIdIfDFunIdIfaceUnfolding IfCoreUnfold IfCompulsory IfInlineRule IfDFunUnfold IfaceInfoItemHsArity HsStrictnessHsCprHsInlineHsUnfold HsNoCafRefsHsLevityHsLFInfo IfaceIdInfoIfaceCompleteMatchIfaceAnnTargetIfaceAnnotationifAnnotatedTargetifAnnotatedValue IfaceRule ifRuleName ifActivation ifRuleBndrs ifRuleHead ifRuleArgs ifRuleRhs ifRuleAuto ifRuleOrph IfaceFamInst ifFamInstFam ifFamInstTysifFamInstAxiom ifFamInstOrph IfaceClsInst ifInstCls ifInstTysifDFunifOFlag ifInstOrph IfaceSrcBang IfSrcBang IfaceBangIfNoBangIfStrictIfUnpack IfUnpackCo IfaceEqSpec IfaceConDeclIfCon ifConName ifConWrapper ifConInfix ifConExTCvsifConUserTvBinders ifConEqSpec ifConCtxt ifConArgTys ifConFields ifConStrictsifConSrcStricts IfaceConDeclsIfAbstractTyCon IfDataTyCon IfNewTyCon IfaceAxBranch ifaxbTyVarsifaxbEtaTyVars ifaxbCoVarsifaxbLHS ifaxbRolesifaxbRHS ifaxbIncompsIfaceAT IfaceClassOpIfaceFamTyConFlavIfaceDataFamilyTyConIfaceOpenSynFamilyTyConIfaceClosedSynFamilyTyCon!IfaceAbstractClosedSynFamilyTyConIfaceBuiltInSynFamTyConIfaceTyConParent IfNoParentIfDataInstanceIfaceClassBodyIfAbstractClassIfConcreteClass ifClassCtxtifATsifSigsifMinDef IfaceDeclIfaceId IfaceData IfaceSynonym IfaceFamily IfaceClass IfaceAxiom IfacePatSynifNameifType ifIdDetailsifIdInfo ifBinders ifResKindifCTypeifRolesifCtxtifCons ifGadtSyntaxifParentifSynRhsifResVar ifFamFlavifFamInjifFDsifBodyifTyConifRole ifAxBranches ifPatIsInfix ifPatMatcher ifPatBuilderifPatUnivBndrs ifPatExBndrs ifPatProvCtxt ifPatReqCtxt ifPatArgsifPatTy ifFieldLabels IfaceTopBndrvisibleIfConDeclsifaceDeclImplicitBndrsifaceDeclFingerprints showToHeader showToIface pprIfaceDecl pprIfaceExprfreeNamesIfDeclfreeNamesIfRulefreeNamesIfFamInst$fNFDataIfaceTyConParent$fBinaryIfaceTyConParent$fOutputableIfaceTyConParent$fNFDataIfaceClassOp$fBinaryIfaceClassOp$fOutputableIfaceClassOp$fHasOccNameIfaceClassOp$fNamedThingIfaceClassOp$fNFDataIfaceAxBranch$fBinaryIfaceAxBranch$fNFDataIfaceFamTyConFlav$fBinaryIfaceFamTyConFlav$fNFDataIfaceBang$fBinaryIfaceBang$fNFDataIfaceSrcBang$fBinaryIfaceSrcBang$fNFDataIfaceConDecl$fBinaryIfaceConDecl$fHasOccNameIfaceConDecl$fNamedThingIfaceConDecl$fNFDataIfaceConDecls$fBinaryIfaceConDecls$fNFDataIfaceClsInst$fBinaryIfaceClsInst$fOutputableIfaceClsInst$fNFDataIfaceFamInst$fBinaryIfaceFamInst$fOutputableIfaceFamInst$fNFDataIfaceAnnotation$fBinaryIfaceAnnotation$fOutputableIfaceAnnotation$fNFDataIfaceCompleteMatch$fBinaryIfaceCompleteMatch$fOutputableIfaceCompleteMatch$fBinaryIfaceLFInfo$fOutputableIfaceLFInfo$fNFDataIfaceTickish$fBinaryIfaceTickish$fNFDataIfaceConAlt$fBinaryIfaceConAlt$fOutputableIfaceConAlt$fNFDataIfaceJoinInfo$fBinaryIfaceJoinInfo$fOutputableIfaceJoinInfo$fNFDataIfaceLetBndr$fNFDataIfaceBinding$fNFDataIfaceExpr$fNFDataIfaceUnfolding$fNFDataIfaceInfoItem$fBinaryIfaceLetBndr$fBinaryIfaceBinding$fBinaryIfaceExpr$fBinaryIfaceUnfolding$fBinaryIfaceInfoItem$fOutputableIfaceUnfolding$fOutputableIfaceInfoItem$fOutputableIfaceExpr$fNFDataIfaceIdDetails$fNFDataIfaceAT$fNFDataIfaceClassBody$fNFDataIfaceDecl$fBinaryIfaceIdDetails$fBinaryIfaceAT$fBinaryIfaceDecl$fOutputableIfaceIdDetails$fOutputableIfaceAT$fOutputableIfaceDecl$fHasOccNameIfaceDecl$fNamedThingIfaceDecl$fNFDataIfaceRule$fBinaryIfaceRule$fOutputableIfaceRule$fOutputableShowHowMuchOutputableBndrFlagAmbiguousFieldOcc Unambiguous AmbiguousXAmbiguousFieldOccFieldOcc XFieldOcc extFieldOccrdrNameFieldOcc LFieldOcc LHsTypeArgHsArgHsValArg HsTypeArgHsArgPar HsConDetails PrefixConRecConInfixCon ConDeclField cd_fld_ext cd_fld_names cd_fld_type cd_fld_doc LConDeclField HsTupleSortHsUnboxedTuple HsBoxedTupleHsConstraintTupleHsBoxedOrConstraintTupleHsScaledHsArrowHsUnrestrictedArrow HsLinearArrowHsExplicitMultHsTyLitHsNumTyHsStrTy NewHsTypeX NHsCoreTyHsType HsForAllTyHsQualTyHsTyVarHsAppTy HsAppKindTyHsFunTyHsListTy HsTupleTyHsSumTyHsOpTyHsParTy HsIParamTyHsStarTy HsKindSig HsSpliceTyHsDocTyHsBangTyHsRecTyHsExplicitListTyHsExplicitTupleTy HsWildCardTyXHsType hst_xforallhst_telehst_body hst_xqualhst_ctxt HsTyVarBndr UserTyVar KindedTyVar XTyVarBndrHsIPName LHsSigWcType LHsWcType LHsSigTypeHsPSRn hsps_nwcs hsps_imp_tvs HsPatSigTypeHsPS XHsPatSigTypehsps_ext hsps_bodyHsWildCardBndrsHsWCXHsWildCardBndrshswc_ext hswc_bodyHsImplicitBndrsHsIBXHsImplicitBndrshsib_ext hsib_body LHsQTyVarsHsQTvs XLHsQTyVarshsq_ext hsq_explicit LHsTyVarBndrHsForAllTelescope HsForAllVis HsForAllInvisXHsForAllTelescopehsf_xvis hsf_vis_bndrs hsf_xinvishsf_invis_bndrsLHsKindHsKindLHsType HsContext LHsContextBangType LBangType getBangTypegetBangStrictness noLHsContextmkHsForAllVisTelemkHsForAllInvisTelemkHsQTvs hsQTvExplicit emptyLHsQTvshsImplicitBody hsSigType hsSigWcType hsPatSigType dropWildCardsmkHsImplicitBndrsmkHsWildCardBndrsmkHsPatSigTypemkEmptyImplicitBndrsmkEmptyWildCardBndrs hsIPNameFShsTyVarBndrFlagsetHsTyVarBndrFlagisHsKindedTyVarhsTvbAllKindedisUnrestricted arrowToHsTypehsMult hsScaledThinghsUnrestrictedhsLinearhsConDetailsArgs hsWcScopedTvs hsScopedTvs hsTyVarName hsLTyVarName hsLTyVarNameshsExplicitLTyVarNameshsAllLTyVarNameshsLTyVarLocNamehsLTyVarLocNames hsTyKindSig ignoreParens isLHsForAllTymkAnonWildCardTymkHsOpTy mkHsAppTy mkHsAppTys mkHsAppKindTysplitHsFunTypehsTyGetAppHead_maybenumVisibleArgslhsTypeArgSrcSpansplitLHsPatSynTysplitLHsSigmaTyInvissplitLHsGadtTysplitLHsForAllTyInvissplitLHsForAllTyInvis_KPsplitLHsQualTysplitLHsInstDeclTygetLHsInstDeclHeadgetLHsInstDeclClass_maybe mkFieldOccmkAmbiguousFieldOccrdrNameAmbiguousFieldOccselectorAmbiguousFieldOccunambiguousFieldOccambiguousFieldOccpprAnonWildCard pprHsForAllpprHsExplicitForAll pprLHsContextpprConDeclFields pprHsTypehsTypeNeedsParensparenthesizeHsTypeparenthesizeHsContext$fOutputableHsImplicitBndrs$fOutputableHsWildCardBndrs$fOutputableBndrHsIPName$fOutputableHsIPName$fOutputableNewHsTypeX$fOutputableHsTyLit$fOutputableHsConDetails$fOutputableHsArg$fOutputableFieldOcc$fOutputableHsForAllTelescope$fOutputableHsType$fOutputableConDeclField$fOutputableHsArrow$fNamedThingHsTyVarBndr$fOutputableLHsQTyVars$fOutputableHsScaled$fOutputableHsPatSigType!$fOutputableBndrAmbiguousFieldOcc$fOutputableAmbiguousFieldOcc$fOutputableHsTyVarBndr$fOutputableBndrFlagSpecificity$fOutputableBndrFlag()$fDataHsConDetails$fDataHsTupleSort $fDataHsTyLit$fDataNewHsTypeX $fEqHsIPName$fDataHsIPName $fDataHsPSRn $fEqFieldOccCoreAltWithFVsCoreExprWithFVs'CoreExprWithFVsCoreBindWithFVsFVAnn exprFreeVarsexprFreeVarsDSetexprFreeVarsList exprFreeIdsexprFreeIdsDSetexprFreeIdsListexprsFreeIdsDSetexprsFreeIdsList exprsFreeVarsexprsFreeVarsList bindFreeVarsexprSomeFreeVarsexprSomeFreeVarsListexprsSomeFreeVarsexprsSomeFreeVarsListexpr_fvsexprsOrphNamesorphNamesOfTypeorphNamesOfTypes orphNamesOfCoorphNamesOfCoConorphNamesOfAxiomorphNamesOfFamInstruleRhsFreeVars ruleFreeVarsrulesFreeVarsDSet mkRuleInfo idRuleRhsVars rulesFreeVarsruleLhsFreeIdsruleLhsFreeIdsList freeVarsOf freeVarsOfAnnvarTypeTyCoVarsvarTypeTyCoFVs idFreeVars dIdFreeVarsidFVsbndrRuleAndUnfoldingVarsDSet idRuleVarsidUnfoldingVarsstableUnfoldingVars freeVarsBindfreeVarsTypeSizeTcLevelMetaInfoTauTvTyVarTv FlatMetaTv FlatSkolTvFlexiIndirectSkolemTv RuntimeUnkMetaTvmtv_infomtv_ref mtv_tclvl SyntaxOpTypeSynAnySynRhoSynListSynFunSynType ExpRhoType ExpSigmaType InferResultIRir_uniqir_lvlir_refExpTypeCheckInfer TcDTyCoVarSet TcDTyVarSet TcTyCoVarSet TcTyVarSetTcKind TcTauType TcRhoType TcSigmaType TcThetaType TcPredTypeTcTyCon TcReqTVBinderTcInvisTVBinder TcTyVarBinder TcTyCoVarTcTypeTcCoVarmkCheckExpType synKnownType mkSynFunTys superSkolemTv maxTcLevel topTcLevel isTopTcLevel pushTcLevelstrictlyDeeperThan sameDepthAs tcTyVarLevel tcTypeLevel promoteSkolempromoteSkolemXpromoteSkolemsX tcTyFamInststcTyFamInstsAndVistcTyConAppTyFamInstsAndVis isTyFamFreeanyRewritableTyVarexactTyCoVarsOfTypeexactTyCoVarsOfTypes tcIsTcTyVarisTouchableMetaTyVarisFloatedTouchableMetaTyVarisImmutableTyVarisTyConableTyVar isFmvTyVar isFskTyVarisFlattenTyVar isSkolemTyVarisOverlappableTyVar isMetaTyVarisAmbiguousTyVar isMetaTyVarTy metaTyVarInfometaTyVarTcLevelmetaTyVarTcLevel_maybe metaTyVarRefsetMetaTyVarTcLevel isTyVarTyVarisFlexi isIndirectisRuntimeUnkSkolmkTyVarNamePairsfindDupTyVarTvs mkSigmaTy mkInfSigmaTy mkSpecSigmaTymkPhiTy getDFunTyKey mkTcAppTys mkTcAppTy mkTcCastTy tcSplitPiTystcSplitPiTy_maybetcSplitForAllTy_maybetcSplitForAllTystcSplitForAllTysReqtcSplitForAllTysInvistcSplitForAllVarBndrs tcIsForAllTytcSplitPredFunTy_maybe tcSplitPhiTytcSplitSigmaTytcSplitNestedSigmaTystcTyConAppTyContcTyConAppTyCon_maybetcTyConAppArgstcSplitTyConApp tcSplitFunTystcSplitFunTy_maybetcSplitFunTysN tcFunArgTy tcFunResultTytcFunResultTyNtcSplitAppTy_maybe tcSplitAppTy tcSplitAppTystcRepGetNumAppTystcGetCastedTyVar_maybetcGetTyVar_maybe tcGetTyVar tcIsTyVarTy tcSplitDFunTytcSplitDFunHeadtcSplitMethodTytcEqKindtcEqTypetcEqTypeNoKindCheck tcEqTypeVis pickyEqTypeisTyVarClassPredcheckValidClsArgs hasTyVarHead evVarPredpickQuantifiablePreds boxEqPredpickCapturedPredsmkMinimalBySCstransSuperClassesimmSuperClassesisImprovementPredisInsolubleOccursCheck isSigmaTyisRhoTy isRhoExpTyisOverloadedTy isFloatTy isDoubleTy isIntegerTy isNaturalTyisIntTyisWordTyisBoolTyisUnitTyisCharTy isFloatingTy isStringTy isCallStackTyisCallStackPred isTyVarHead isRigidTyisAlmostFunctionFree deNoteTypetcSplitIOType_maybeisFFITyisFFIArgumentTyisFFIExternalTyisFFIImportResultTyisFFIExportResultTy isFFIDynTy isFFILabelTyisFFIPrimArgumentTyisFFIPrimResultTy isFunPtrTysizeType sizeTypestcTyConVisibilitiesisNextTyConArgVisibleisNextArgVisible$fOutputableMetaDetails$fOutputableMetaInfo$fOutputableTcLevel$fOutputableTcTyVarDetails$fOutputableInferResult$fOutputableExpType $fEqTcLevel $fOrdTcLevelTcLclEnv getLclEnvLoc setLclEnvLocgetLclEnvTcLevelsetLclEnvTcLevelClsInstLookupResult InstMatch DFunInstTypeVisibleOrphanModulesInstEnvs ie_globalie_local ie_visibleInstEnvClsInst is_cls_nmis_tcs is_dfun_nameis_tvsis_clsis_tysis_dfunis_flag is_orphanfuzzyClsInstCmpisOverlappable isOverlapping isIncoherentinstanceDFunIdupdateClsInstDFuninstanceRoughTcs pprInstancepprInstanceHdr pprInstances instanceHeadorphNamesOfClsInst instanceSigmkLocalInstancemkImportedInstance emptyInstEnv instEnvEltsinstEnvClasses instIsVisibleclassInstances memberInstEnvextendInstEnvList extendInstEnvdeleteFromInstEnvdeleteDFunFromInstEnvidenticalClsInstHeadlookupUniqueInstEnv lookupInstEnvinstanceBindFun$fOutputableClsInst$fNamedThingClsInst$fOutputableClsInstEnv $fDataClsInst QuoteWrapper EvCallStack EvCsEmpty EvCsPushCall EvTypeableEvTypeableTyConEvTypeableTyAppEvTypeableTrFunEvTypeableTyLitEvExprEvTermEvFunet_tvset_givenet_bindset_bodyEvBindeb_lhseb_rhs eb_is_given EvBindMapev_bind_varenv EvBindsVar CoEvBindsVarebv_uniq ebv_bindsebv_tcvs TcEvBindsEvBinds HsWrapperWpHole WpComposeWpFunWpCastWpEvLamWpEvAppWpTyLamWpTyAppWpLetWpMultCoercion TcMCoercion TcCoercionP TcCoercionR TcCoercionN TcCoercion mkTcReflCo mkTcSymCo mkTcTransCo mkTcNomReflCo mkTcRepReflComkTcTyConAppCo mkTcAppCo mkTcFunCo mkTcAxInstComkTcUnbranchedAxInstCo mkTcForAllCo mkTcForAllCos mkTcNthComkTcLRCo mkTcSubCotcDowngradeRolemkTcAxiomRuleComkTcGReflRightComkTcGReflLeftComkTcCoherenceLeftComkTcCoherenceRightCo mkTcPhantomCo mkTcKindCo mkTcCoVarComkTcFamilyTyConAppCotcCoercionKindtcCoercionRole isTcReflCoisTcReflexiveCo maybeTcSubCo<.>mkWpFun mkWpCastR mkWpCastN mkWpTyApps mkWpEvApps mkWpEvVarApps mkWpTyLamsmkWpLamsmkWpLet idHsWrapper isIdHsWrapperhsWrapDictBinderscollectHsWrapBindersisCoEvBindsVaremptyEvBindMap extendEvBindsisEmptyEvBindMap lookupEvBindevBindMapBinds foldEvBindMapnonDetStrictFoldEvBindMapfilterEvBindMapevBindMapToVarSetvarSetMinusEvBindMap evBindVarmkWantedEvBind mkGivenEvBindevId evCoercionevCast evDFunApp evDataConApp evSelector evTypeablemkEvCastmkEvScSelectorsemptyTcEvBindsisEmptyTcEvBindsevTermCoercion_maybeevTermCoercionfindNeededEvVars evVarsOfTerm pprHsWrapperunwrapIPwrapIPquoteWrapperTyVarTyapplyQuoteWrapper$fOutputableEvTypeable$fOutputableEvTerm$fOutputableEvBind$fUniquableEvBindsVar$fOutputableEvBindsVar$fOutputableTcEvBinds$fOutputableEvBindMap$fDataTcEvBinds$fOutputableHsWrapper$fDataHsWrapper$fOutputableEvCallStack$fDataQuoteWrapper$fDataEvCallStack$fDataEvTypeable $fDataEvTerm HsPatSynDirUnidirectionalImplicitBidirectionalExplicitBidirectionalRecordPatSynFieldrecordPatSynSelectorIdrecordPatSynPatVarHsPatSynDetails TcSpecPragSpecPrag LTcSpecPrag TcSpecPragsIsDefaultMethod SpecPrags FixitySig LFixitySigSigTypeSig PatSynSig ClassOpSigIdSigFixSig InlineSigSpecSig SpecInstSig MinimalSig SCCFunSigCompleteMatchSigXSigLSigIPBindXIPBindLIPBind HsIPBindsIPBinds PatSynBindPSBpsb_extpsb_idpsb_argspsb_defpsb_dirABExportABE XABExportabe_extabe_polyabe_monoabe_wrap abe_prags NPatBindTcpat_fvs pat_rhs_tyHsBindLRFunBindPatBindVarBindAbsBinds XHsBindsLRfun_extfun_id fun_matchesfun_tickpat_extpat_lhspat_rhs pat_ticksvar_extvar_idvar_rhsabs_extabs_tvs abs_ev_vars abs_exports abs_ev_binds abs_bindsabs_sig LHsBindLR LHsBindsLRHsBindLHsBindsLHsBind NHsValBindsLR NValBinds HsValBindsLRValBinds XValBindsLR HsValBindsLHsLocalBindsLRHsLocalBindsLREmptyLocalBindsXHsLocalBindsLR LHsLocalBinds HsLocalBinds pprLHsBindspprLHsBindsForUser pprDeclListemptyLocalBindseqEmptyLocalBindsisEmptyValBindsemptyValBindsInemptyValBindsOut emptyLHsBindsisEmptyLHsBindsplusHsValBinds ppr_monobindpprTicksisEmptyIPBindsPRisEmptyIPBindsTc noSpecPrags hasSpecPragsisDefaultMethod isFixityLSig isTypeLSig isSpecLSigisSpecInstLSig isPragLSig isInlineLSig isMinimalLSig isSCCFunSigisCompleteMatchSighsSigDocppr_sig pragBracketspragSrcBrackets pprVarSigpprSpecpprTcSpecPrags pprMinimalSig$fOutputableIPBind$fOutputableHsIPBinds$fOutputableFixitySig$fOutputableSig$fOutputableTcSpecPrag$fOutputableABExport$fTraversableRecordPatSynField$fFoldableRecordPatSynField$fOutputableRecordPatSynField$fOutputablePatSynBind$fOutputableHsBindLR$fOutputableHsValBindsLR$fOutputableHsLocalBindsLR$fDataRecordPatSynField$fFunctorRecordPatSynField$fDataTcSpecPrags$fDataTcSpecPrag$fDataNPatBindTc HsRecField' HsRecField hsRecFieldLbl hsRecFieldArghsRecPun HsRecUpdFieldLHsRecUpdField LHsRecField LHsRecField' HsRecFieldsrec_flds rec_dotdotCoPat co_cpt_wrap co_pat_inner co_pat_tyConPatTc cpt_arg_tyscpt_tvs cpt_dicts cpt_bindscpt_wrapHsConPatDetailsConLikeP ListPatTcWildPatVarPatLazyPatAsPatParPatBangPatListPatTuplePatSumPatConPatViewPat SplicePatLitPatNPat NPlusKPatSigPatXPat pat_con_extpat_conpat_args hsConPatArgs hsRecFieldshsRecFieldsArgs hsRecFieldSel hsRecFieldIdhsRecUpdFieldRdrhsRecUpdFieldIdhsRecUpdFieldOcc pprParendLPat pprConArgsmkPrefixConPatmkNilPat mkCharLitPat isBangedLPatlooksLazyPatBindisIrrefutableHsPat isSimplePatpatNeedsParensparenthesizePatcollectEvVarsPatscollectEvVarsPat$fOutputableHsRecField'$fOutputableHsRecFields$fOutputablePat$fFunctorHsRecFields$fFoldableHsRecFields$fTraversableHsRecFields$fDataHsRecField'$fFunctorHsRecField'$fFoldableHsRecField'$fTraversableHsRecField' RoleAnnotDeclXRoleAnnotDeclLRoleAnnotDecl AnnProvenanceValueAnnProvenanceTypeAnnProvenanceModuleAnnProvenance HsAnnotationXAnnDeclLAnnDeclWarnDeclWarning XWarnDecl LWarnDecl WarnDeclsWarnings XWarnDeclswd_extwd_src wd_warnings LWarnDeclsDocDeclDocCommentNextDocCommentPrevDocCommentNamedDocGroupLDocDeclRuleBndr RuleBndrSig XRuleBndr LRuleBndrHsRuleRnRuleDeclHsRule XRuleDeclrd_extrd_namerd_actrd_tyvsrd_tmvsrd_lhsrd_rhs LRuleDecl RuleDeclsHsRules XRuleDeclsrds_extrds_src rds_rules LRuleDecls ForeignExportCExport CImportSpecCLabel CFunctionCWrapper ForeignImportCImport ForeignDecl XForeignDeclfd_i_extfd_name fd_sig_tyfd_fifd_e_extfd_fe LForeignDecl DefaultDecl XDefaultDecl LDefaultDecl DerivStrategy StockStrategyAnyclassStrategyNewtypeStrategy ViaStrategyLDerivStrategy DerivDecl XDerivDecl deriv_ext deriv_typederiv_strategyderiv_overlap_mode LDerivDeclInstDeclClsInstD DataFamInstD TyFamInstD XInstDecl cid_d_extcid_instdfid_ext dfid_insttfid_ext tfid_inst LInstDecl ClsInstDecl XClsInstDeclcid_ext cid_poly_ty cid_bindscid_sigscid_tyfam_instscid_datafam_instscid_overlap_mode LClsInstDeclFamEqnXFamEqnfeqn_ext feqn_tycon feqn_bndrs feqn_pats feqn_fixityfeqn_rhs FamInstEqn LFamInstEqnDataFamInstDecldfid_eqnLDataFamInstDecl TyFamInstDecltfid_eqnLTyFamInstDeclLTyFamDefltDeclTyFamDefltDecl TyFamInstEqnHsTyPats LTyFamInstEqnHsConDeclDetailsConDecl ConDeclGADT ConDeclH98XConDecl con_g_ext con_names con_forall con_qvars con_mb_cxtcon_args con_res_tycon_doccon_extcon_name con_ex_tvsLConDecl NewOrDataNewTypeDataTypeStandaloneKindSigLStandaloneKindSigHsDerivingClauseXHsDerivingClausederiv_clause_extderiv_clause_strategyderiv_clause_tysLHsDerivingClause HsDeriving HsDataDefn XHsDataDefndd_extdd_NDdd_ctxtdd_cType dd_kindSigdd_cons dd_derivs FamilyInfo DataFamilyOpenTypeFamilyClosedTypeFamilyInjectivityAnnLInjectivityAnn FamilyDecl XFamilyDeclfdExtfdInfofdLNamefdTyVarsfdFixity fdResultSigfdInjectivityAnn LFamilyDeclFamilyResultSigNoSigKindSigTyVarSigXFamilyResultSigLFamilyResultSig TyClGroup XTyClGroup group_ext group_tyclds group_roles group_kisigs group_instds DataDeclRn tcdDataCusktcdFVs LHsFunDepTyClDeclFamDeclSynDeclDataDecl ClassDecl XTyClDecltcdFExttcdFamtcdSExttcdLName tcdTyVars tcdFixitytcdRhstcdDExt tcdDataDefntcdCExttcdCtxttcdFDstcdSigstcdMethstcdATs tcdATDefstcdDocs LTyClDecl SpliceDecl LSpliceDeclHsGroupXHsGrouphs_exths_valds hs_splcds hs_tyclds hs_derivdshs_fixdshs_defdshs_fords hs_warndshs_annds hs_ruledshs_docsHsDeclTyClDInstDDerivDValDSigDKindSigDDefDForDWarningDAnnDRuleDSpliceDDocD RoleAnnotDXHsDeclLHsDeclpartitionBindsAndSigs emptyRdrGroup emptyRnGrouphsGroupInstDeclshsGroupTopLevelFixitySigs appendGroups isDataDecl isSynDecl isClassDecl isFamilyDeclisTypeFamilyDeclisOpenTypeFamilyInfoisClosedTypeFamilyInfoisDataFamilyDecltyFamInstDeclNametyFamInstDeclLName tyClDeclLNametcdNametyClDeclTyVarscountTyClDecls hsDeclHasCuskpprTyClDeclFlavourtyClGroupTyClDeclstyClGroupInstDeclstyClGroupRoleDeclstyClGroupKindSigsfamilyDeclLNamefamilyDeclNamefamResultKindSignatureresultVariableNamestandaloneKindSigNamenewOrDataToFlavour getConNames getConArgshsConDeclArgTyshsConDeclThetapprTyFamInstDeclpprDataFamInstFlavourpprHsFamInstLHSinstDeclDataFamInstsderivStrategyNamefoldDerivStrategymapDerivStrategyflattenRuleDeclscollectRuleBndrSigTyspprFullRuleName docDeclDocannProvenanceName_mayberoleAnnotDeclName$fOutputableSpliceDecl$fOutputableStandaloneKindSig$fOutputableNewOrData$fOutputableConDecl$fOutputableTyFamInstDecl$fOutputableFamilyInfo$fOutputableFamilyDecl$fOutputableDerivStrategy$fOutputableDerivDecl$fOutputableHsDerivingClause$fOutputableHsDataDefn$fOutputableDataFamInstDecl$fOutputableClsInstDecl$fOutputableInstDecl$fOutputableDefaultDecl$fOutputableForeignImport$fOutputableForeignExport$fOutputableForeignDecl$fOutputableRuleBndr$fOutputableRuleDecl$fOutputableRuleDecls$fOutputableDocDecl$fOutputableTyClDecl$fOutputableWarnDecl$fOutputableWarnDecls$fOutputableAnnDecl$fOutputableRoleAnnotDecl$fOutputableTyClGroup$fOutputableHsGroup$fOutputableHsDecl $fDataDocDecl$fDataHsRuleRn$fDataForeignExport$fDataForeignImport$fDataCImportSpec $fEqNewOrData$fDataNewOrData$fDataDataDeclRn$fDataAnnProvenance$fTraversableAnnProvenance$fFoldableAnnProvenance$fFunctorAnnProvenance optCoercion checkAxInstCo ForeignHintNoHintAddrHint SignedHintLengthWidthW8W16W32W64W128W256W512CmmType cmmEqTypecmmEqType_ignoring_ptrhood typeWidthcmmBitscmmFloatb8b16b32b64b128b256b512f32f64bWord bHalfWordgcWordcInt isFloatType isGcPtrType isBitsTypeisWord64isWord32 isFloat32 isFloat64 wordWidth halfWordWidth halfWordMask cIntWidth widthInBits widthInByteswidthFromBytes widthInLognarrowUnarrowSvecvec2vec4vec8vec16vec2f64vec2b64vec4f32vec4b32vec8b16vec16b8cmmVec vecLength vecElemType isVecTyperEP_CostCentreStack_mem_allocrEP_CostCentreStack_scc_countrEP_StgEntCounter_allocsrEP_StgEntCounter_allocd$fOutputableWidth$fOutputableCmmCat$fOutputableCmmType$fEqForeignHint $fEqCmmCat $fEqWidth $fOrdWidth $fShowWidth NCGConfig ncgPlatformncgProcAlignment ncgDebugLevelncgExternalDynamicRefsncgPICncgInlineThresholdMemcpyncgInlineThresholdMemsetncgSplitSectionsncgSpillPreallocSizencgRegsIterative ncgAsmLintingncgDoConstantFolding ncgSseVersion ncgBmiVersionncgDumpRegAllocStagesncgDumpAsmStatsncgDumpAsmConflicts ncgWordWidthplatformWordWidth AtomicMachOpAMO_AddAMO_SubAMO_AndAMO_NandAMO_OrAMO_Xor CallishMachOp MO_F64_Pwr MO_F64_Sin MO_F64_Cos MO_F64_Tan MO_F64_Sinh MO_F64_Cosh MO_F64_Tanh MO_F64_Asin MO_F64_Acos MO_F64_Atan MO_F64_Asinh MO_F64_Acosh MO_F64_Atanh MO_F64_Log MO_F64_Log1P MO_F64_Exp MO_F64_ExpM1 MO_F64_Fabs MO_F64_Sqrt MO_F32_Pwr MO_F32_Sin MO_F32_Cos MO_F32_Tan MO_F32_Sinh MO_F32_Cosh MO_F32_Tanh MO_F32_Asin MO_F32_Acos MO_F32_Atan MO_F32_Asinh MO_F32_Acosh MO_F32_Atanh MO_F32_Log MO_F32_Log1P MO_F32_Exp MO_F32_ExpM1 MO_F32_Fabs MO_F32_Sqrt MO_UF_Conv MO_S_Mul2 MO_S_QuotRem MO_U_QuotRem MO_U_QuotRem2MO_Add2 MO_AddWordC MO_SubWordC MO_AddIntC MO_SubIntC MO_U_Mul2MO_ReadBarrierMO_WriteBarrierMO_TouchMO_Prefetch_Data MO_Memcpy MO_Memset MO_Memmove MO_Memcmp MO_PopCntMO_PdepMO_PextMO_ClzMO_CtzMO_BSwapMO_BRev MO_AtomicRMW MO_AtomicReadMO_AtomicWrite MO_CmpxchgMO_XchgMachOpMO_AddMO_SubMO_EqMO_NeMO_MulMO_S_MulMayOflo MO_S_QuotMO_S_RemMO_S_NegMO_U_MulMayOflo MO_U_QuotMO_U_RemMO_S_GeMO_S_LeMO_S_GtMO_S_LtMO_U_GeMO_U_LeMO_U_GtMO_U_LtMO_F_AddMO_F_SubMO_F_NegMO_F_Mul MO_F_QuotMO_F_EqMO_F_NeMO_F_GeMO_F_LeMO_F_GtMO_F_LtMO_AndMO_OrMO_XorMO_NotMO_ShlMO_U_ShrMO_S_Shr MO_SF_Conv MO_FS_Conv MO_SS_Conv MO_UU_Conv MO_XX_Conv MO_FF_Conv MO_V_Insert MO_V_ExtractMO_V_AddMO_V_SubMO_V_Mul MO_VS_Quot MO_VS_Rem MO_VS_Neg MO_VU_Quot MO_VU_Rem MO_VF_Insert MO_VF_Extract MO_VF_Add MO_VF_Sub MO_VF_Neg MO_VF_Mul MO_VF_QuotMO_AlignmentCheck pprMachOp mo_wordAdd mo_wordSub mo_wordEq mo_wordNe mo_wordMul mo_wordSQuot mo_wordSRem mo_wordSNeg mo_wordUQuot mo_wordURem mo_wordSGe mo_wordSLe mo_wordSGt mo_wordSLt mo_wordUGe mo_wordULe mo_wordUGt mo_wordULt mo_wordAnd mo_wordOr mo_wordXor mo_wordNot mo_wordShl mo_wordSShr mo_wordUShr mo_u_8To32 mo_s_8To32 mo_u_16To32 mo_s_16To32 mo_u_8ToWord mo_s_8ToWord mo_u_16ToWord mo_s_16ToWord mo_s_32ToWord mo_u_32ToWord mo_WordTo8 mo_WordTo16 mo_WordTo32 mo_WordTo64mo_32To8 mo_32To16isCommutableMachOpisAssociativeMachOpisComparisonMachOpmaybeIntComparisonisFloatComparisonmaybeInvertComparisonmachOpResultType machOpArgRepspprCallishMachOpcallishMachOpHintsmachOpMemcpyishAlign$fEqCallishMachOp$fShowCallishMachOp$fEqAtomicMachOp$fShowAtomicMachOp $fEqMachOp $fShowMachOpPrimCallPrimOpResultInfo ReturnsPrim ReturnsAlg PrimOpVecCatIntVecWordVecFloatVecCharGtOpCharGeOpCharEqOpCharNeOpCharLtOpCharLeOpOrdOp Int8Extend Int8Narrow Int8NegOp Int8AddOp Int8SubOp Int8MulOp Int8QuotOp Int8RemOp Int8QuotRemOpInt8EqOpInt8GeOpInt8GtOpInt8LeOpInt8LtOpInt8NeOp Word8Extend Word8Narrow Word8NotOp Word8AddOp Word8SubOp Word8MulOp Word8QuotOp Word8RemOpWord8QuotRemOp Word8EqOp Word8GeOp Word8GtOp Word8LeOp Word8LtOp Word8NeOp Int16Extend Int16Narrow Int16NegOp Int16AddOp Int16SubOp Int16MulOp Int16QuotOp Int16RemOpInt16QuotRemOp Int16EqOp Int16GeOp Int16GtOp Int16LeOp Int16LtOp Int16NeOp Word16Extend Word16Narrow Word16NotOp Word16AddOp Word16SubOp Word16MulOp Word16QuotOp Word16RemOpWord16QuotRemOp Word16EqOp Word16GeOp Word16GtOp Word16LeOp Word16LtOp Word16NeOpIntAddOpIntSubOpIntMulOp IntMul2OpIntMulMayOfloOp IntQuotOpIntRemOp IntQuotRemOpAndIOpOrIOpXorIOpNotIOpIntNegOp IntAddCOp IntSubCOpIntGtOpIntGeOpIntEqOpIntNeOpIntLtOpIntLeOpChrOp Int2WordOp Int2FloatOp Int2DoubleOp Word2FloatOp Word2DoubleOpISllOpISraOpISrlOp WordAddOp WordAddCOp WordSubCOp WordAdd2Op WordSubOp WordMulOp WordMul2Op WordQuotOp WordRemOp WordQuotRemOpWordQuotRem2OpAndOpOrOpXorOpNotOpSllOpSrlOp Word2IntOpWordGtOpWordGeOpWordEqOpWordNeOpWordLtOpWordLeOp PopCnt8Op PopCnt16Op PopCnt32Op PopCnt64OpPopCntOpPdep8OpPdep16OpPdep32OpPdep64OpPdepOpPext8OpPext16OpPext32OpPext64OpPextOpClz8OpClz16OpClz32OpClz64OpClzOpCtz8OpCtz16OpCtz32OpCtz64OpCtzOp BSwap16Op BSwap32Op BSwap64OpBSwapOpBRev8OpBRev16OpBRev32OpBRev64OpBRevOp Narrow8IntOp Narrow16IntOp Narrow32IntOp Narrow8WordOpNarrow16WordOpNarrow32WordOp DoubleGtOp DoubleGeOp DoubleEqOp DoubleNeOp DoubleLtOp DoubleLeOp DoubleAddOp DoubleSubOp DoubleMulOp DoubleDivOp DoubleNegOp DoubleFabsOp Double2IntOpDouble2FloatOp DoubleExpOp DoubleExpM1Op DoubleLogOp DoubleLog1POp DoubleSqrtOp DoubleSinOp DoubleCosOp DoubleTanOp DoubleAsinOp DoubleAcosOp DoubleAtanOp DoubleSinhOp DoubleCoshOp DoubleTanhOp DoubleAsinhOp DoubleAcoshOp DoubleAtanhOp DoublePowerOpDoubleDecode_2IntOpDoubleDecode_Int64Op FloatGtOp FloatGeOp FloatEqOp FloatNeOp FloatLtOp FloatLeOp FloatAddOp FloatSubOp FloatMulOp FloatDivOp FloatNegOp FloatFabsOp Float2IntOp FloatExpOp FloatExpM1Op FloatLogOp FloatLog1POp FloatSqrtOp FloatSinOp FloatCosOp FloatTanOp FloatAsinOp FloatAcosOp FloatAtanOp FloatSinhOp FloatCoshOp FloatTanhOp FloatAsinhOp FloatAcoshOp FloatAtanhOp FloatPowerOpFloat2DoubleOpFloatDecode_IntOp NewArrayOpSameMutableArrayOp ReadArrayOp WriteArrayOp SizeofArrayOpSizeofMutableArrayOp IndexArrayOpUnsafeFreezeArrayOpUnsafeThawArrayOp CopyArrayOpCopyMutableArrayOp CloneArrayOpCloneMutableArrayOp FreezeArrayOp ThawArrayOp CasArrayOpNewSmallArrayOpSameSmallMutableArrayOpShrinkSmallMutableArrayOp_CharReadSmallArrayOpWriteSmallArrayOpSizeofSmallArrayOpSizeofSmallMutableArrayOpGetSizeofSmallMutableArrayOpIndexSmallArrayOpUnsafeFreezeSmallArrayOpUnsafeThawSmallArrayOpCopySmallArrayOpCopySmallMutableArrayOpCloneSmallArrayOpCloneSmallMutableArrayOpFreezeSmallArrayOpThawSmallArrayOpCasSmallArrayOpNewByteArrayOp_CharNewPinnedByteArrayOp_Char NewAlignedPinnedByteArrayOp_CharMutableByteArrayIsPinnedOpByteArrayIsPinnedOpByteArrayContents_CharSameMutableByteArrayOpShrinkMutableByteArrayOp_CharResizeMutableByteArrayOp_CharUnsafeFreezeByteArrayOpSizeofByteArrayOpSizeofMutableByteArrayOpGetSizeofMutableByteArrayOpIndexByteArrayOp_CharIndexByteArrayOp_WideCharIndexByteArrayOp_IntIndexByteArrayOp_WordIndexByteArrayOp_AddrIndexByteArrayOp_FloatIndexByteArrayOp_DoubleIndexByteArrayOp_StablePtrIndexByteArrayOp_Int8IndexByteArrayOp_Int16IndexByteArrayOp_Int32IndexByteArrayOp_Int64IndexByteArrayOp_Word8IndexByteArrayOp_Word16IndexByteArrayOp_Word32IndexByteArrayOp_Word64IndexByteArrayOp_Word8AsChar IndexByteArrayOp_Word8AsWideCharIndexByteArrayOp_Word8AsAddrIndexByteArrayOp_Word8AsFloatIndexByteArrayOp_Word8AsDouble!IndexByteArrayOp_Word8AsStablePtrIndexByteArrayOp_Word8AsInt16IndexByteArrayOp_Word8AsInt32IndexByteArrayOp_Word8AsInt64IndexByteArrayOp_Word8AsIntIndexByteArrayOp_Word8AsWord16IndexByteArrayOp_Word8AsWord32IndexByteArrayOp_Word8AsWord64IndexByteArrayOp_Word8AsWordReadByteArrayOp_CharReadByteArrayOp_WideCharReadByteArrayOp_IntReadByteArrayOp_WordReadByteArrayOp_AddrReadByteArrayOp_FloatReadByteArrayOp_DoubleReadByteArrayOp_StablePtrReadByteArrayOp_Int8ReadByteArrayOp_Int16ReadByteArrayOp_Int32ReadByteArrayOp_Int64ReadByteArrayOp_Word8ReadByteArrayOp_Word16ReadByteArrayOp_Word32ReadByteArrayOp_Word64ReadByteArrayOp_Word8AsCharReadByteArrayOp_Word8AsWideCharReadByteArrayOp_Word8AsAddrReadByteArrayOp_Word8AsFloatReadByteArrayOp_Word8AsDouble ReadByteArrayOp_Word8AsStablePtrReadByteArrayOp_Word8AsInt16ReadByteArrayOp_Word8AsInt32ReadByteArrayOp_Word8AsInt64ReadByteArrayOp_Word8AsIntReadByteArrayOp_Word8AsWord16ReadByteArrayOp_Word8AsWord32ReadByteArrayOp_Word8AsWord64ReadByteArrayOp_Word8AsWordWriteByteArrayOp_CharWriteByteArrayOp_WideCharWriteByteArrayOp_IntWriteByteArrayOp_WordWriteByteArrayOp_AddrWriteByteArrayOp_FloatWriteByteArrayOp_DoubleWriteByteArrayOp_StablePtrWriteByteArrayOp_Int8WriteByteArrayOp_Int16WriteByteArrayOp_Int32WriteByteArrayOp_Int64WriteByteArrayOp_Word8WriteByteArrayOp_Word16WriteByteArrayOp_Word32WriteByteArrayOp_Word64WriteByteArrayOp_Word8AsChar WriteByteArrayOp_Word8AsWideCharWriteByteArrayOp_Word8AsAddrWriteByteArrayOp_Word8AsFloatWriteByteArrayOp_Word8AsDouble!WriteByteArrayOp_Word8AsStablePtrWriteByteArrayOp_Word8AsInt16WriteByteArrayOp_Word8AsInt32WriteByteArrayOp_Word8AsInt64WriteByteArrayOp_Word8AsIntWriteByteArrayOp_Word8AsWord16WriteByteArrayOp_Word8AsWord32WriteByteArrayOp_Word8AsWord64WriteByteArrayOp_Word8AsWordCompareByteArraysOpCopyByteArrayOpCopyMutableByteArrayOpCopyByteArrayToAddrOpCopyMutableByteArrayToAddrOpCopyAddrToByteArrayOpSetByteArrayOpAtomicReadByteArrayOp_IntAtomicWriteByteArrayOp_IntCasByteArrayOp_IntFetchAddByteArrayOp_IntFetchSubByteArrayOp_IntFetchAndByteArrayOp_IntFetchNandByteArrayOp_IntFetchOrByteArrayOp_IntFetchXorByteArrayOp_IntNewArrayArrayOpSameMutableArrayArrayOpUnsafeFreezeArrayArrayOpSizeofArrayArrayOpSizeofMutableArrayArrayOpIndexArrayArrayOp_ByteArrayIndexArrayArrayOp_ArrayArrayReadArrayArrayOp_ByteArray!ReadArrayArrayOp_MutableByteArrayReadArrayArrayOp_ArrayArray"ReadArrayArrayOp_MutableArrayArrayWriteArrayArrayOp_ByteArray"WriteArrayArrayOp_MutableByteArrayWriteArrayArrayOp_ArrayArray#WriteArrayArrayOp_MutableArrayArrayCopyArrayArrayOpCopyMutableArrayArrayOp AddrAddOp AddrSubOp AddrRemOp Addr2IntOp Int2AddrOpAddrGtOpAddrGeOpAddrEqOpAddrNeOpAddrLtOpAddrLeOpIndexOffAddrOp_CharIndexOffAddrOp_WideCharIndexOffAddrOp_IntIndexOffAddrOp_WordIndexOffAddrOp_AddrIndexOffAddrOp_FloatIndexOffAddrOp_DoubleIndexOffAddrOp_StablePtrIndexOffAddrOp_Int8IndexOffAddrOp_Int16IndexOffAddrOp_Int32IndexOffAddrOp_Int64IndexOffAddrOp_Word8IndexOffAddrOp_Word16IndexOffAddrOp_Word32IndexOffAddrOp_Word64ReadOffAddrOp_CharReadOffAddrOp_WideCharReadOffAddrOp_IntReadOffAddrOp_WordReadOffAddrOp_AddrReadOffAddrOp_FloatReadOffAddrOp_DoubleReadOffAddrOp_StablePtrReadOffAddrOp_Int8ReadOffAddrOp_Int16ReadOffAddrOp_Int32ReadOffAddrOp_Int64ReadOffAddrOp_Word8ReadOffAddrOp_Word16ReadOffAddrOp_Word32ReadOffAddrOp_Word64WriteOffAddrOp_CharWriteOffAddrOp_WideCharWriteOffAddrOp_IntWriteOffAddrOp_WordWriteOffAddrOp_AddrWriteOffAddrOp_FloatWriteOffAddrOp_DoubleWriteOffAddrOp_StablePtrWriteOffAddrOp_Int8WriteOffAddrOp_Int16WriteOffAddrOp_Int32WriteOffAddrOp_Int64WriteOffAddrOp_Word8WriteOffAddrOp_Word16WriteOffAddrOp_Word32WriteOffAddrOp_Word64InterlockedExchange_AddrInterlockedExchange_WordCasAddrOp_AddrCasAddrOp_Word NewMutVarOp ReadMutVarOp WriteMutVarOp SameMutVarOpAtomicModifyMutVar2OpAtomicModifyMutVar_Op CasMutVarOpCatchOpRaiseOp RaiseIOOpMaskAsyncExceptionsOpMaskUninterruptibleOpUnmaskAsyncExceptionsOp MaskStatus AtomicallyOpRetryOp CatchRetryOp CatchSTMOp NewTVarOp ReadTVarOp ReadTVarIOOp WriteTVarOp SameTVarOp NewMVarOp TakeMVarOp TryTakeMVarOp PutMVarOp TryPutMVarOp ReadMVarOp TryReadMVarOp SameMVarOp IsEmptyMVarOp NewIOPortrOp ReadIOPortOp WriteIOPortOp SameIOPortOpDelayOp WaitReadOp WaitWriteOpForkOpForkOnOp KillThreadOpYieldOp MyThreadIdOp LabelThreadOpIsCurrentThreadBoundOp NoDuplicateOpThreadStatusOpMkWeakOpMkWeakNoFinalizerOpAddCFinalizerToWeakOp DeRefWeakOpFinalizeWeakOpTouchOpMakeStablePtrOpDeRefStablePtrOp EqStablePtrOpMakeStableNameOpEqStableNameOpStableNameToIntOp CompactNewOpCompactResizeOpCompactContainsOpCompactContainsAnyOpCompactGetFirstBlockOpCompactGetNextBlockOpCompactAllocateBlockOpCompactFixupPointersOp CompactAddCompactAddWithSharing CompactSizeReallyUnsafePtrEqualityOpParOpSparkOpSeqOp GetSparkOp NumSparks KeepAliveOp DataToTagOp TagToEnumOp AddrToAnyOp AnyToAddrOp MkApUpd0_OpNewBCOOpUnpackClosureOp ClosureSizeOpGetApStackValOp GetCCSOfOpGetCurrentCCSOp ClearCCSOp TraceEventOpTraceEventBinaryOp TraceMarkerOpSetThreadAllocationCounterVecBroadcastOp VecPackOp VecUnpackOp VecInsertOpVecAddOpVecSubOpVecMulOpVecDivOp VecQuotOpVecRemOpVecNegOpVecIndexByteArrayOpVecReadByteArrayOpVecWriteByteArrayOpVecIndexOffAddrOpVecReadOffAddrOpVecWriteOffAddrOpVecIndexScalarByteArrayOpVecReadScalarByteArrayOpVecWriteScalarByteArrayOpVecIndexScalarOffAddrOpVecReadScalarOffAddrOpVecWriteScalarOffAddrOpPrefetchByteArrayOp3PrefetchMutableByteArrayOp3PrefetchAddrOp3PrefetchValueOp3PrefetchByteArrayOp2PrefetchMutableByteArrayOp2PrefetchAddrOp2PrefetchValueOp2PrefetchByteArrayOp1PrefetchMutableByteArrayOp1PrefetchAddrOp1PrefetchValueOp1PrefetchByteArrayOp0PrefetchMutableByteArrayOp0PrefetchAddrOp0PrefetchValueOp0 maxPrimOpTag primOpTag allThePrimOps tagToEnumKey primOpFixity primOpDocsprimOpOutOfLineprimOpOkForSpeculationprimOpOkForSideEffects primOpIsCheapprimOpCodeSize primOpTypeprimOpResultType primOpOccprimOpWrapperIdisComparisonPrimOp primOpSiggetPrimOpResultInfo$fOutputablePrimOp $fOrdPrimOp $fEqPrimOp$fOutputablePrimCall StgPprOpts stgSccEnabledOutputablePassStgOp StgPrimOp StgPrimCallOp StgFCallOp UpdateFlag ReEntrant Updatable SingleEntry OutStgAlt OutStgRhs OutStgExpr OutStgArg OutStgBindingOutStgTopBindingInStgAltInStgRhs InStgExprInStgArg InStgBindingInStgTopBindingCgStgAltCgStgRhs CgStgExpr CgStgBindingCgStgTopBindingLlStgAltLlStgRhs LlStgExpr LlStgBindingLlStgTopBindingStgAltStgRhsStgExpr StgBinding StgTopBindingAltTypePolyAlt MultiValAltAlgAltPrimAlt GenStgAlt XLetNoEscape XRhsClosureBinderPNoExtFieldSilentStgPassVanillaLiftLamsCodeGen GenStgRhs StgRhsClosure StgRhsCon GenStgExprStgAppStgLit StgConAppStgOpAppStgLamStgCaseStgLetStgLetNoEscapeStgTickStgArg StgVarArg StgLitArg GenStgBinding StgNonRecStgRecGenStgTopBinding StgTopLiftedStgTopStringLit isDllConApp stgArgTypestripStgTicksTopstripStgTicksTopEstgCaseBndrInScopenoExtFieldSilent stgRhsArity isUpdatable bindersOfTopbindersOfTopBindsinitStgPprOptspanicStgPprOptspprGenStgTopBindingpprGenStgTopBindings pprStgBindingpprStgTopBindingpprStgTopBindings pprStgArg pprStgExpr pprStgRhs$fOutputableStgArg$fOutputableNoExtFieldSilent$fOutputableAltType$fOutputableUpdateFlag$fDataNoExtFieldSilent$fEqNoExtFieldSilent$fOrdNoExtFieldSilent CheapAppFunexprType coreAltType coreAltsType mkLamType mkLamTypes isExprLevPolyapplyTypeToArgsmkCastmkTickmkTicks mkTickNoHNF tickHNFArgs stripTicksTopstripTicksTopEstripTicksTopT stripTicksE stripTicksT bindNonRecneedsCaseBinding mkAltExpr mkDefaultCasemkSingleAltCase findDefault addDefault isDefaultAltfindAlt mergeAlts trimConArgs filterAltsrefineDefaultAltcombineIdenticalAlts scaleAltsBy exprIsTrivialgetIdFromTrivialExprgetIdFromTrivialExpr_maybe exprIsDeadEnd exprIsDupableexprIsWorkFree exprIsCheap exprIsCheapXexprIsExpandable isCheapAppisExpandableAppexprOkForSpeculationexprOkForSideEffectsaltsAreExhaustive exprIsHNF exprIsConLikeexprIsTopLevelBindableexprIsTickedStringexprIsTickedString_maybedataConRepInstPatdataConRepFSInstPat cheapEqExpr cheapEqExpr'eqExprdiffExpr diffBinds tryEtaReduce isEmptyTycollectMakeStaticArgs isJoinBinddumpIdInfoOfProgramisUnsafeEqualityProofMkDelta delta_ty_st delta_tm_stTyStateTyStVarInfoVIvi_tyvi_posvi_negvi_cacheTmStateTmStts_factsts_reps SharedDIdEnvSDIEunSDIESharedEntryPossibleMatchesPMNoPM ConLikeSet PmAltConSetPmAltCon PmAltConLikePmAltLit PmEqualityEqualDisjointPossiblyOverlap PmLitValuePmLitIntPmLitRat PmLitChar PmLitString PmLitOverInt PmLitOverRatPmLitOverStringPmLit pm_lit_ty pm_lit_val pmLitTypeemptyPmAltConSetisEmptyPmAltConSetelemPmAltConSetextendPmAltConSetpmAltConSetElems eqPmAltCon pmAltConTypeliteralToPmLit negatePmLit overloadPmLitpmLitAsStringLitcoreExprAsPmLit emptySDIE lookupSDIEsameRepresentativeSDIEsetIndirectSDIE setEntrySDIE traverseSDIE liftDeltasM$fOutputablePmLitValue$fOutputablePmLit$fOutputablePmEquality $fEqPmLit$fOutputablePmAltCon $fEqPmAltCon$fOutputablePmAltConSet$fOutputablePossibleMatches$fOutputableShared$fOutputableSharedDIdEnv$fOutputableVarInfo$fOutputableTmState$fOutputableTyState$fOutputableDelta$fSemigroupDeltas$fOutputableDeltas$fEqPmEquality$fShowPmEquality IdSubstEnvSubst isEmptySubst emptySubst mkEmptySubstmkSubst substInScope zapSubstEnv extendIdSubstextendIdSubstList extendSubstextendSubstWithVarextendSubstList lookupIdSubstlookupTCvSubstdelBndrdelBndrs mkOpenSubst addInScopeSet extendInScopeextendInScopeListextendInScopeIds setInScope substExprSC substExpr substBindSC substBind deShadowBinds substBndr substBndrs substRecBndrs cloneIdBndr cloneIdBndrs cloneBndrs cloneBndrcloneRecIdBndrs getTCvSubst substIdType substIdInfosubstUnfoldingSCsubstUnfolding substIdOcc substSpecsubstRulesForImportedIds substDVarSet substTickish$fOutputableSubst ArityTypeATopABot manifestArity joinRhsArity exprArity typeArityexprBotStrictness_maybearityTypeArityexpandableArityTypeisBotArityType maxWithArityexprEtaExpandArity findRhsArity idArityType etaExpand etaExpandATetaExpandToJoinPointetaExpandToJoinPointRule$fOutputableArityType$fOutputableEtaInfo $fEqArityTypeoccurAnalysePgmoccurAnalyseExpr$fOutputableOccEncl$fOutputableUsageDetails$fOutputableDetails SwitchPlanUnconditionallyIfEqualIfLT JumpTable SwitchTargetsmkSwitchTargetsmapSwitchTargetsswitchTargetsCasesswitchTargetsDefaultswitchTargetsRangeswitchTargetsSignedswitchTargetsToTableswitchTargetsToListswitchTargetsFallThrougheqSwitchTargetWithtargetSupportsSwitchcreateSwitchPlan$fShowSwitchPlan$fShowSwitchTargets$fEqSwitchTargetsDynamicLinkerLabelInfoCodeStub SymbolPtr GotSymbolPtrGotSymbolOffsetForeignLabelSourceForeignLabelInPackageForeignLabelInExternalPackageForeignLabelInThisPackageNeedExternDecl isIdLabel isTickyLabelpprDebugCLabel mkSRTLabelmkRednCountsLabelmkLocalClosureLabelmkLocalInfoTableLabelmkLocalClosureTableLabelmkClosureLabelmkInfoTableLabel mkEntryLabelmkClosureTableLabelmkConInfoTableLabel mkBytesLabelmkBlockInfoTableLabelmkDirty_MUT_VAR_Label#mkNonmovingWriteBarrierEnabledLabelmkUpdInfoLabelmkBHUpdInfoLabelmkIndStaticInfoLabelmkMainCapabilityLabelmkMAP_FROZEN_CLEAN_infoLabelmkMAP_FROZEN_DIRTY_infoLabelmkMAP_DIRTY_infoLabelmkTopTickyCtrLabelmkCAFBlackHoleInfoTableLabelmkArrWords_infoLabelmkSMAP_FROZEN_CLEAN_infoLabelmkSMAP_FROZEN_DIRTY_infoLabelmkSMAP_DIRTY_infoLabelmkBadAlignmentLabelmkSRTInfoLabelmkCmmInfoLabelmkCmmEntryLabelmkCmmRetInfoLabel mkCmmRetLabelmkCmmCodeLabelmkCmmClosureLabelmkCmmDataLabelmkRtsCmmDataLabelmkLocalBlockLabelmkRtsPrimOpLabelmkSelectorInfoLabelmkSelectorEntryLabelmkApInfoTableLabelmkApEntryLabelmkPrimCallLabelmkForeignLabel addLabelSize isBytesLabelisForeignLabelisStaticClosureLabelisSomeRODataLabelisInfoTableLabelisConInfoTableLabelforeignLabelStdcallInfo mkBitmapLabel mkCCLabel mkCCSLabelmkRtsApFastLabelmkRtsSlowFastTickyCtrLabelmkHpcTicksLabelmkDynamicLinkerLabeldynamicLinkerLabelInfomkPicBaseLabelmkDeadStripPreventermkStringLitLabelmkAsmTempLabelmkAsmTempDerivedLabelmkAsmTempEndLabelmkAsmTempDieLabel toClosureLbltoSlowEntryLbl toEntryLbl toInfoLblhasHaskellNamehasCAF needsCDeclmaybeLocalBlockLabel isMathFunexternallyVisibleCLabelisCFunctionLabel isGcPtrLabel isLocalCLabel labelDynamic pprCLabel mayRedirectTo$fOutputableForeignLabelSource$fOutputableCLabel $fOrdCLabel $fEqCLabel$fEqDynamicLinkerLabelInfo$fOrdDynamicLinkerLabelInfo$fEqCmmLabelInfo$fOrdCmmLabelInfo$fEqRtsLabelInfo$fOrdRtsLabelInfo$fEqIdLabelInfo$fOrdIdLabelInfo$fShowIdLabelInfo$fEqForeignLabelSource$fOrdForeignLabelSource$fOrdNeedExternDecl$fEqNeedExternDecl newBlockIdblockLbl infoTblLbl GlobalReg VanillaRegFloatReg DoubleRegLongRegXmmRegYmmRegZmmRegSpSpLimHpHpLimCCCS CurrentTSOCurrentNurseryHpAllocEagerBlackholeInfoGCEnter1GCFunBaseRegMachSpUnwindReturnReg PicBaseRegVGcPtr VNonGcPtr DefinerOfRegs foldRegsDefd UserOfRegs foldRegsUsed GlobalRegSet LocalRegSetRegSetLocalRegCmmLitCmmIntCmmFloatCmmVecCmmLabel CmmLabelOffCmmLabelDiffOffCmmBlockCmmHighStackMarkAreaOldYoungCmmRegCmmLocal CmmGlobalCmmExprCmmLoad CmmMachOp CmmStackSlot CmmRegOff cmmExprType cmmLitType cmmExprWidthcmmExprAlignmentmaybeInvertCmmExpr cmmRegType cmmRegWidth localRegType emptyRegSet nullRegSet elemRegSet extendRegSetdeleteFromRegSetmkRegSet minusRegSet plusRegSet timesRegSet sizeRegSet regSetToListfoldLocalRegsUsedfoldLocalRegsDefdbaseRegspReghpReghpLimRegspLimRegnodeReg currentTSORegcurrentNurseryReg hpAllocRegcccsRegnode globalRegTypeisArgReg$fUniquableLocalReg $fOrdLocalReg $fEqLocalReg$fUserOfRegsr[]$fUserOfRegsrr$fDefinerOfRegsr[]$fDefinerOfRegsrr$fOrdGlobalReg $fEqGlobalReg$fDefinerOfRegsGlobalRegCmmReg$fUserOfRegsGlobalRegCmmReg$fDefinerOfRegsLocalRegCmmReg$fUserOfRegsLocalRegCmmReg$fUserOfRegsrCmmExpr $fEqCmmExpr $fEqCmmReg $fOrdCmmReg$fShowGlobalReg $fEqVGcPtr $fShowVGcPtr $fEqCmmLit$fEqArea $fOrdArea callerSaves activeStgRegs haveRegBaseglobalRegMaybefreeReg freeRegBase CmmTickScope GlobalScopeSubScope CombinedScope CmmTickish ForeignTarget PrimTarget CmmReturnInfo CmmMayReturnCmmNeverReturnsForeignConvention ConventionNativeDirectCallNativeNodeCall NativeReturnSlowGCUpdFrameOffset CmmFormal CmmActualCmmNodeCmmEntry CmmCommentCmmTick CmmUnwind CmmAssignCmmStoreCmmUnsafeForeignCall CmmBranch CmmCondBranch CmmSwitchCmmCallCmmForeignCallcml_predcml_true cml_false cml_likely cml_targetcml_cont cml_args_regscml_args cml_ret_args cml_ret_offtgtresargsret_argsret_offintrblforeignTargetHints wrapRecExpmapExp mapExpDeep wrapRecExpMmapExpM mapExpDeepM wrapRecExpffoldExp foldExpDeep mapSuccessorsmapCollectSuccessorsisTickSubScopecombineTickScopes$fUserOfRegsrForeignTarget$fOutputableCmmTickScope$fOrdCmmTickScope$fEqCmmTickScope$fDefinerOfRegsGlobalRegCmmNode$fDefinerOfRegsLocalRegCmmNode$fUserOfRegsGlobalRegCmmNode$fUserOfRegsLocalRegCmmNode$fNonLocalCmmNode$fEqForeignTarget$fEqForeignConvention$fEqCmmReturnInfo$fEqConvention $fEqCmmNode ListGraph GenBasicBlock BasicBlock RawCmmStatics CmmStatics GenCmmStatics CmmStaticsRaw CmmStatic CmmStaticLitCmmUninitialised CmmString CmmFileEmbedSectionSectionProtectionReadWriteSectionReadOnlySectionWriteProtectedSection SectionTypeTextData ReadOnlyDataRelocatableReadOnlyDataUninitialisedDataReadOnlyData16CString OtherSection ProfilingInfoNoProfilingInfo CmmInfoTablecit_lblcit_repcit_profcit_srtcit_clo CmmStackInfo StackInfo arg_space do_layout CmmTopInfoTopInfo info_tbls stack_info GenCmmGraphCmmGraphg_entryg_graph RawCmmDecl CmmDeclSRTsCmmDecl GenCmmDeclCmmProcCmmData RawCmmGroup CmmGroupSRTsCmmGroup GenCmmGroup CmmProgram topInfoTablesectionProtectionblockId pprBBlock$fOutputableGenBasicBlock$fOutputableListGraph$fEqSectionProtection$fShowSectionType BreakArrayBAshowBreakArray setBreakOn setBreakOffgetBreak newBreakArray C_ffi_cifFFIConvFFICCall FFIStdCallFFITypeFFIVoid FFIPointerFFIFloat FFIDoubleFFISInt8 FFISInt16 FFISInt32 FFISInt64FFIUInt8 FFIUInt16 FFIUInt32 FFIUInt64prepForeignCallfreeForeignCallInfo $fShowFFIConv$fGenericFFIConv$fBinaryFFIConv $fShowFFIType$fGenericFFIType$fBinaryFFIType ForeignHValue ForeignRef HValueRef RemoteRefHValue RemotePtr toRemotePtr fromRemotePtr castRemotePtr toHValueRef mkRemoteReflocalRef freeRemoteRef mkForeignRefwithForeignRefunsafeForeignRefToRemoteReffinalizeForeignRef $fShowHValue$fNFDataForeignRef$fShowRemoteRef$fBinaryRemoteRef$fNFDataRemotePtr$fBinaryRemotePtr$fShowRemotePtrMap AnnLookupAnnLookupModule AnnLookupNameNominalRRepresentationalRPhantomRInferR TyVarBndrPlainTVKindedTVForallT ForallVisTAppTAppKindTSigTVarTConT PromotedTInfixTUInfixTParensTTupleT UnboxedTupleT UnboxedSumTArrowT MulArrowT EqualityTListTPromotedTupleT PromotedNilT PromotedConsTStarT ConstraintTLitT WildCardTImplicitParamT PatSynArgs PrefixPatSyn InfixPatSyn RecordPatSyn PatSynDirUnidir ImplBidir ExplBidir VarStrictType StrictType VarBangTypeBangConNormalCRecCInfixCForallCGadtCRecGadtCDecidedStrictness DecidedLazy DecidedStrict DecidedUnpackSourceStrictnessNoSourceStrictness SourceLazy SourceStrictSourceUnpackednessNoSourceUnpackednessSourceNoUnpack SourceUnpackCxtModuleAnnotationTypeAnnotationValueAnnotationRuleVar TypedRuleVarPhases AllPhases FromPhase BeforePhase RuleMatchPragmaInlineP SpecialisePSpecialiseInstPRulePAnnPLineP CompletePUnsafeSafe InterruptibleCallconvStdCallCApiPrim JavaScriptForeignImportFExportFTySynEqnTypeFamilyHead PatSynType DerivClauseOverlapDecFunDDataDNewtypeDTySynDClassD InstanceDKiSigDForeignDInfixDPragmaD DataFamilyD DataInstD NewtypeInstD TySynInstDOpenTypeFamilyDClosedTypeFamilyDStandaloneDerivD DefaultSigDPatSynD PatSynSigDImplicitParamBindDRangeFromR FromThenRFromToR FromThenToRStmtBindSLetSNoBindSParSRecSGuardNormalGPatGGuardedBNormalBFieldExpExpVarEConELitEAppEAppTypeEInfixEUInfixEParensELamELamCaseETupE UnboxedTupE UnboxedSumECondEMultiIfELetECaseEDoEMDoECompE ArithSeqEListESigERecConERecUpdEStaticE UnboundVarELabelEImplicitParamVarEClauseMatchFieldPatLitPVarPTupP UnboxedTupP UnboxedSumPConPInfixPUInfixPParensPTildePBangPAsPWildPRecPListPSigPViewPBytesbytesPtr bytesOffset bytesSizeCharLStringLIntegerL RationalLIntPrimL WordPrimL FloatPrimL DoublePrimL StringPrimL BytesPrimL CharPrimL InstanceDecUnliftedSumAritySumAlt ParentName ModuleInfoInfoClassIClassOpITyConIFamilyI PrimTyConIDataConIPatSynIVarITyVarICharPosLoc loc_filename loc_package loc_module loc_startloc_endNameIsAloneAppliedUniqVarNameDataName TcClsName NameFlavourNameSNameQNameUNameLNameGPkgNameModNameLiftlift liftTypedCode examineCodeTExpunTypeQuotenewNameQunQQuasiqNewNameqReportqRecover qLookupNameqReify qReifyFixity qReifyTypeqReifyInstances qReifyRolesqReifyAnnotations qReifyModuleqReifyConStrictness qLocationqRunIOqAddDependentFile qAddTempFile qAddTopDeclsqAddForeignFilePathqAddModFinalizerqAddCorePluginqGetQqPutQ qIsExtEnabled qExtsEnabledmemcmp newNameIObadIOcounterrunQunTypeQunsafeTExpCoerceunsafeCodeCoerceliftCode unTypeCode hoistCodebindCode bindCode_joinCodereport reportError reportWarningrecover lookupNamelookupTypeNamelookupValueNamereify reifyFixity reifyTypereifyInstances reifyRolesreifyAnnotations reifyModulereifyConStrictness isInstancelocationrunIOaddDependentFile addTempFile addTopDeclsaddForeignFileaddForeignSourceaddForeignFilePath addCorePlugingetQputQ isExtEnabled extsEnabled sequenceQ liftStringtrueName falseName nothingNamejustNameleftName rightName nonemptyNameoneNamemanyNamedataToQa dataToExpQliftData dataToPatQ mkModName modString mkPkgName pkgString occStringnameBase namePackage nameSpacemkNamemkNameUmkNameLmkNameGmkNameS mkNameG_v mkNameG_tc mkNameG_dshowName showName' tupleDataName tupleTypeNameunboxedTupleDataNameunboxedTupleTypeName mk_tup_nameunboxedSumDataNameunboxedSumTypeNameeqBytes compareBytescmpEq $fShowName $fQuoteIO $fOrdBytes $fEqBytes $fShowBytes$fLiftSumRep(#||||||#)$fLiftSumRep(#|||||#)$fLiftSumRep(#||||#)$fLiftSumRep(#|||#)$fLiftSumRep(#||#)$fLiftSumRep(#|#)$fLiftTupleRep(#,,,,,,#)$fLiftTupleRep(#,,,,,#)$fLiftTupleRep(#,,,,#)$fLiftTupleRep(#,,,#)$fLiftTupleRep(#,,#)$fLiftTupleRep(#,#)$fLiftTupleRepUnit#$fLiftTupleRep(##)$fLiftLiftedRep(,,,,,,)$fLiftLiftedRep(,,,,,)$fLiftLiftedRep(,,,,)$fLiftLiftedRep(,,,)$fLiftLiftedRep(,,)$fLiftLiftedRep(,)$fLiftLiftedRep()$fLiftLiftedRepVoid$fLiftLiftedRepNonEmpty$fLiftLiftedRep[]$fLiftLiftedRepEither$fLiftLiftedRepMaybe$fLiftAddrRepAddr#$fLiftLiftedRepBool$fLiftWordRepChar#$fLiftLiftedRepChar$fLiftDoubleRepDouble#$fLiftLiftedRepDouble$fLiftFloatRepFloat#$fLiftLiftedRepFloat$fLiftLiftedRepRatio$fLiftLiftedRepNatural$fLiftLiftedRepWord64$fLiftLiftedRepWord32$fLiftLiftedRepWord16$fLiftLiftedRepWord8$fLiftLiftedRepWord$fLiftWordRepWord#$fLiftLiftedRepInt64$fLiftLiftedRepInt32$fLiftLiftedRepInt16$fLiftLiftedRepInt8$fLiftIntRepInt#$fLiftLiftedRepInt$fLiftLiftedRepInteger$fQuasiQ $fMonadIOQ$fQuoteQ $fMonadFixQ $fMonoidQ $fSemigroupQ$fApplicativeQ $fFunctorQ $fMonadFailQ$fMonadQ $fQuasiIO $fShowInfo$fEqInfo $fOrdInfo $fDataInfo $fGenericInfo $fShowDec$fEqDec$fOrdDec $fDataDec $fGenericDec$fShowPatSynDir $fEqPatSynDir$fOrdPatSynDir$fDataPatSynDir$fGenericPatSynDir $fShowClause $fEqClause $fOrdClause $fDataClause$fGenericClause $fShowBody$fEqBody $fOrdBody $fDataBody $fGenericBody $fShowGuard $fEqGuard $fOrdGuard $fDataGuard$fGenericGuard $fShowStmt$fEqStmt $fOrdStmt $fDataStmt $fGenericStmt $fShowExp$fEqExp$fOrdExp $fDataExp $fGenericExp $fShowRange $fEqRange $fOrdRange $fDataRange$fGenericRange $fShowMatch $fEqMatch $fOrdMatch $fDataMatch$fGenericMatch $fShowPat$fEqPat$fOrdPat $fDataPat $fGenericPat $fShowPragma $fEqPragma $fOrdPragma $fDataPragma$fGenericPragma$fShowDerivClause$fEqDerivClause$fOrdDerivClause$fDataDerivClause$fGenericDerivClause$fShowDerivStrategy$fEqDerivStrategy$fOrdDerivStrategy$fDataDerivStrategy$fGenericDerivStrategy$fShowTySynEqn $fEqTySynEqn $fOrdTySynEqn$fDataTySynEqn$fGenericTySynEqn $fShowForeign $fEqForeign $fOrdForeign $fDataForeign$fGenericForeign$fShowRuleBndr $fEqRuleBndr $fOrdRuleBndr$fDataRuleBndr$fGenericRuleBndr $fShowCon$fEqCon$fOrdCon $fDataCon $fGenericCon$fShowTypeFamilyHead$fEqTypeFamilyHead$fOrdTypeFamilyHead$fDataTypeFamilyHead$fGenericTypeFamilyHead$fShowFamilyResultSig$fEqFamilyResultSig$fOrdFamilyResultSig$fDataFamilyResultSig$fGenericFamilyResultSig $fShowType$fEqType $fOrdType $fGenericType$fShowTyVarBndr $fEqTyVarBndr$fOrdTyVarBndr$fDataTyVarBndr$fGenericTyVarBndr$fFunctorTyVarBndr$fShowAnnLookup $fEqAnnLookup$fOrdAnnLookup$fDataAnnLookup$fGenericAnnLookup $fShowRole $fGenericRole $fShowTyLit$fGenericTyLit$fShowInjectivityAnn$fEqInjectivityAnn$fOrdInjectivityAnn$fDataInjectivityAnn$fGenericInjectivityAnn$fShowSpecificity$fGenericSpecificity$fShowPatSynArgs$fEqPatSynArgs$fOrdPatSynArgs$fDataPatSynArgs$fGenericPatSynArgs $fShowBang$fEqBang $fOrdBang $fDataBang $fGenericBang$fShowDecidedStrictness$fEqDecidedStrictness$fOrdDecidedStrictness$fDataDecidedStrictness$fGenericDecidedStrictness$fShowSourceStrictness$fEqSourceStrictness$fOrdSourceStrictness$fDataSourceStrictness$fGenericSourceStrictness$fShowSourceUnpackedness$fEqSourceUnpackedness$fOrdSourceUnpackedness$fDataSourceUnpackedness$fGenericSourceUnpackedness$fShowAnnTarget $fEqAnnTarget$fOrdAnnTarget$fDataAnnTarget$fGenericAnnTarget $fShowPhases $fEqPhases $fOrdPhases $fDataPhases$fGenericPhases$fShowRuleMatch $fEqRuleMatch$fOrdRuleMatch$fDataRuleMatch$fGenericRuleMatch $fShowInline $fEqInline $fOrdInline $fDataInline$fGenericInline $fOrdSafety$fGenericSafety$fShowCallconv $fEqCallconv $fOrdCallconv$fDataCallconv$fGenericCallconv $fShowFunDep $fEqFunDep $fOrdFunDep $fDataFunDep$fGenericFunDep $fShowOverlap $fEqOverlap $fOrdOverlap $fDataOverlap$fGenericOverlap $fShowLit$fEqLit$fOrdLit $fDataLit $fGenericLit $fDataBytes$fGenericBytes $fOrdFixity $fShowFixity$fGenericFixity$fOrdFixityDirection$fShowFixityDirection$fGenericFixityDirection$fShowModuleInfo$fEqModuleInfo$fOrdModuleInfo$fDataModuleInfo$fGenericModuleInfo $fShowLoc$fEqLoc$fOrdLoc $fDataLoc $fGenericLoc $fGenericName$fDataNameFlavour$fEqNameFlavour$fOrdNameFlavour$fShowNameFlavour$fGenericNameFlavour$fShowNameSpace$fDataNameSpace$fGenericNameSpace $fShowOccName$fGenericOccName $fShowModule $fEqModule $fOrdModule $fDataModule$fGenericModule $fShowPkgName $fEqPkgName $fOrdPkgName $fDataPkgName$fGenericPkgName $fShowModName $fEqModName $fOrdModName $fDataModName$fGenericModNamePprMpprNamepprName' to_HPJ_Doc $fMonadPprM$fApplicativePprM $fFunctorPprM $fShowPprMPprFlag pprTyVarBndrTypeArgTANormalTyArg ForallVisFlag ForallVis ForallInvisPprppr_list Precedence nestDepthunopPrecnoPrecparensIfpprint pprFixity pprPatSynSig pprInfixExppprExp pprFields pprMaybeExp pprMatchPat pprGuardedpprBodypprLit bytesToString pprStringpprPatppr_decppr_deriv_strategy ppr_overlapppr_data ppr_newtypeppr_deriv_clause ppr_tySyn ppr_tf_head ppr_bndrscommaSepApplied pprForall pprForallVis pprForall' pprRecFields pprGadtRHSpprVarBangType pprBangTypepprVarStrictType pprStrictType pprUInfixTpprParendTypeArgisStarTpprTyApp fromTANormal pprFunArgTypepprCxt ppr_cxt_preds where_clause showtextl hashParens quoteParenscommaSep commaSepWithsemiSepunboxedSumBarsbar$fPprLoc $fPprRange $fPprRole $fPprTyLit $fPprType$fPprDecidedStrictness$fPprSourceStrictness$fPprSourceUnpackedness $fPprBang$fPprPatSynArgs$fPprPatSynDir$fPprCon $fPprClause $fPprRuleBndr $fPprPhases$fPprRuleMatch $fPprInline $fPprPragma $fPprForeign$fPprInjectivityAnn$fPprFamilyResultSig $fPprFunDep$fPprDec$fPprPat$fPprLit $fPprMatch $fPprStmt$fPprExp$fPprModuleInfo $fPprModule $fPprInfo $fPprName$fPpr[] $fPprTypeArg$fPprTyVarBndr$fPprFlagSpecificity $fPprFlag()$fShowForallVisFlag TyVarBndrSpec TyVarBndrUnitDerivStrategyQFamilyResultSigQ PatSynArgsQ PatSynDirQ TySynEqnQ RuleBndrQ FieldExpQVarStrictTypeQ StrictTypeQ VarBangTypeQ BangTypeQBangQSourceUnpackednessQSourceStrictnessQRangeQStmtQGuardQBodyQClauseQMatchQ DerivClauseQPredQCxtQTyLitQKindQTypeQConQDecsDecsQDecQExpQ FieldPatQPatQInfoQCodeQTExpQintPrimL wordPrimL floatPrimL doublePrimLintegerLcharL charPrimLstringL stringPrimL bytesPrimL rationalLlitPvarPtupP unboxedTupP unboxedSumPconPinfixPuInfixPparensPtildePbangPasPwildPrecPlistPsigPviewPfieldPatbindSletSnoBindSparSrecSfromR fromThenRfromToR fromThenToRnormalBguardedBnormalGnormalGEpatGpatGEmatchclausevarEconElitEappEappTypeEparensEuInfixEinfixEinfixAppsectionLsectionRlamElam1ElamCaseEtupE unboxedTupE unboxedSumEcondEmultiIfEletEcaseEdoEmdoEcompE arithSeqElistEsigErecConErecUpdEstringEfieldExpstaticE unboundVarElabelEimplicitParamVarEfromE fromThenEfromToE fromThenToEvalDfunDtySynDdataDnewtypeDclassD instanceDinstanceWithOverlapDsigDkiSigDforImpDinfixLDinfixRDinfixNDpragInlD pragSpecD pragSpecInlD pragSpecInstD pragRuleDpragAnnD pragLineD pragCompleteD dataInstD newtypeInstD tySynInstD dataFamilyDopenTypeFamilyDclosedTypeFamilyD roleAnnotDstandaloneDerivDstandaloneDerivWithStrategyD defaultSigDpatSynD patSynSigDimplicitParamBindDtySynEqncxt derivClause stockStrategyanyclassStrategynewtypeStrategy viaStrategynormalCrecCinfixCforallCgadtCrecGadtCforallT forallVisTvarTconTinfixTuInfixTparensTappTappKindTarrowT mulArrowTlistTlitTtupleT unboxedTupleT unboxedSumTsigT equalityT wildCardTimplicitParamTclassPequalP promotedTpromotedTupleT promotedNilT promotedConsTnoSourceUnpackednesssourceNoUnpack sourceUnpacknoSourceStrictness sourceLazy sourceStrictisStrict notStrictunpackedbangbangType varBangType strictType varStrictTypenumTyLitstrTyLitplainTV plainInvisTVkindedTV kindedInvisTV specifiedSpec inferredSpecvarKconKtupleKarrowKlistKappKstarK constraintKnoSigkindSigtyVarSiginjectivityAnnnominalRrepresentationalRphantomRinferRcCallstdCallcApiprim javaScriptunsafesafe interruptiblefunDepruleVar typedRuleVarvalueAnnotationtypeAnnotationmoduleAnnotationunidir implBidir explBidir prefixPatSyn recordPatSyn infixPatSynappsEmkBytes HsStmtContextListComp MonadCompDoExprMDoExpr ArrowExpr GhciStmtCtxtPatGuard ParStmtCtxt TransStmtCtxtHsMatchContextFunRhs LambdaExprCaseAltIfAltProcExpr PatBindRhs PatBindGuardsRecUpdStmtCtxt ThPatSplice ThPatQuotemc_fun mc_fixity mc_strictness ArithSeqInfoFromFromThenFromTo FromThenTo HsBracketExpBrPatBrDecBrLDecBrGTypBrVarBrTExpBrPendingTcSpliceUntypedSpliceFlavourUntypedExpSpliceUntypedPatSpliceUntypedTypeSpliceUntypedDeclSplicePendingRnSpliceSplicePointNameHsSplicedThing HsSplicedExpr HsSplicedTy HsSplicedPat DelayedSpliceThModFinalizersSpliceDecoration DollarSplice BareSplice HsSplicedT HsTypedSpliceHsUntypedSplice HsQuasiQuote HsSplicedXSpliceApplicativeArgApplicativeArgOneApplicativeArgManyXApplicativeArgxarg_app_arg_oneapp_arg_patternarg_expr is_body_stmtxarg_app_arg_many app_stmts final_expr bv_pattern stmt_context FailOperator ParStmtBlock TransFormThenForm GroupForm XBindStmtTc xbstc_bindOpxbstc_boundResultTypexbstc_boundResultMult xbstc_failOp XBindStmtRn xbsrn_bindOp xbsrn_failOp RecStmtTc recS_bind_tyrecS_later_rets recS_rec_rets recS_ret_tyStmtLRLastStmtBindStmtApplicativeStmtBodyStmtLetStmtParStmt TransStmtRecStmtXStmtLRtrS_exttrS_form trS_stmts trS_bndrs trS_usingtrS_bytrS_rettrS_bindtrS_fmaprecS_ext recS_stmtsrecS_later_ids recS_rec_ids recS_bind_fn recS_ret_fn recS_mfix_fnGhciStmt GhciLStmt GuardStmt GuardLStmtExprStmt ExprLStmtCmdStmtCmdLStmtLStmtLRLStmtGRHSXGRHSLGRHSXGRHSsgrhssExt grhssGRHSsgrhssLocalBindsXMatchm_extm_ctxtm_patsm_grhssLMatch MatchGroupTc mg_arg_tys mg_res_tyMG XMatchGroupmg_extmg_alts mg_origin HsRecordBindsCmdTopTcHsCmdTop LHsCmdTop HsArrAppTypeHsHigherOrderAppHsFirstOrderApp HsCmdArrApp HsCmdArrFormHsCmdAppHsCmdLamHsCmdPar HsCmdCase HsCmdLamCaseHsCmdIfHsCmdLetHsCmdDoXCmdLHsCmdHsTupArgPresentMissingXTupArg LHsTupArgHsPragE HsPragSCC HsPragTickXHsPragE HsExpansion HsExpanded XXExprGhcTcWrapExpr ExpansionExprHsWrap RecordUpdTc rupd_cons rupd_in_tys rupd_out_tys rupd_wrap RecordConTc rcon_con_like rcon_con_exprHsVar HsUnboundVar HsConLikeOutHsRecFld HsOverLabelHsIPVarHsLam HsLamCaseHsApp HsAppTypeOpAppNegAppHsParSectionLSectionR ExplicitTuple ExplicitSumHsCaseHsIf HsMultiIfHsLetHsDo ExplicitList RecordCon RecordUpd ExprWithTySigArithSeqHsRnBracketOutHsTcBracketOut HsSpliceEHsProcHsStaticHsTick HsBinTickXExprrcon_ext rcon_con_name rcon_fldsrupd_ext rupd_expr rupd_fldsCmdSyntaxTable SyntaxExprTcNoSyntaxExprTcsyn_expr syn_arg_wraps syn_res_wrap SyntaxExprRnNoSyntaxExprRn SyntaxExprGhc PostTcTable PostTcExprnoExpr noSyntaxExpr mkSyntaxExprmkRnSyntaxExpr mkExpanded tupArgPresent isQuietHsExprpprBinds ppr_lexprppr_exprppr_infix_exprppr_appspprExternalSrcLocpprDebugParendExprpprParendLExprhsExprNeedsParensparenthesizeHsExprstripParensLHsExprstripParensHsExprisAtomicHsExprpprLCmdpprCmd isQuietHsCmdppr_lcmdppr_cmd pprCmdArg isInfixMatchisEmptyMatchGroupisSingletonMatchGroupmatchGroupArity hsLMatchPats pprMatchespprMatchpprGRHSspprGRHSpp_rhspprStmtpprArgpprTransformStmt pprTransStmtpprBypprDoppr_module_name_prefix ppr_do_stmtspprComppprQuals isTypedSplicepprPendingSpliceppr_splice_decl ppr_quasi ppr_spliceisTypedBracket pprHsBracket thBrackets thTyBrackets pp_dotdot isPatSynCtxtqualifiedDoModuleName_maybeisComprehensionContextisMonadStmtContextisMonadCompContextmatchSeparatorpprMatchContextpprMatchContextNounpprAStmtContextpprStmtContextprependQualifiedmatchContextErrStringpprMatchInCtxt pprStmtInCtxt$fOutputableHsExpansion$fOutputableHsPragE$fOutputableSpliceDecoration$fDataThModFinalizers$fOutputableHsStmtContext$fOutputableHsMatchContext$fOutputableArithSeqInfo$fOutputablePendingTcSplice$fOutputablePendingRnSplice$fOutputableHsBracket$fOutputableHsSplice$fOutputableHsSplicedThing$fOutputableApplicativeArg$fOutputableStmtLR$fOutputableParStmtBlock$fOutputableMatch$fOutputableHsCmdTop$fOutputableHsCmd$fOutputableHsExpr$fOutputableSyntaxExprTc$fOutputableSyntaxExprRn$fDataDelayedSplice$fDataHsSplicedT$fDataUntypedSpliceFlavour$fDataSpliceDecoration$fEqSpliceDecoration$fShowSpliceDecoration$fDataTransForm$fDataMatchGroupTc$fDataHsArrAppType$fDataHsExpansion $fDataHsWrap CollectPass collectXXPatmkHsPar mkSimpleMatchunguardedGRHSs unguardedRHS mkMatchGroupmkHsApp mkHsAppWithmkHsApps mkHsAppsWith mkHsAppType mkHsAppTypesmkHsLammkHsLams mkHsCaseAlt nlHsTyApp nlHsTyAppsmkLHsParmkParPatnlParPat mkHsIntegralmkHsFractional mkHsIsStringmkHsDomkHsCompmkHsIf mkHsCmdIfmkNPat mkNPlusKPatemptyTransStmtmkTransformStmtmkTransformByStmtmkGroupUsingStmtmkGroupByUsingStmt mkLastStmt mkBodyStmt mkPsBindStmt mkRnBindStmt mkTcBindStmt unitRecStmtTc emptyRecStmtemptyRecStmtNameemptyRecStmtId mkRecStmt mkHsOpAppmkUntypedSplice mkTypedSplicemkHsQuasiQuote mkHsStringmkHsStringPrimLitnlHsVarnl_HsVar nlHsDataConnlHsLit nlHsIntLitnlVarPatnlLitPatnlHsAppnlHsSyntaxAppsnlHsApps nlHsVarApps nlConVarPatnlConVarPatName nlInfixConPatnlConPat nlConPatNamenlNullaryConPat nlWildConPat nlWildPat nlWildPatNamenlHsDo nlHsOpAppnlHsLamnlHsParnlHsIfnlHsCasenlList nlHsAppTy nlHsTyVar nlHsFunTy nlHsParTy nlHsTyConApp nlHsAppKindTymkLHsTupleExpr mkLHsVarTuple nlTuplePat missingTupArgmkBigLHsVarTup mkBigLHsTupmkBigLHsVarPatTupmkBigLHsPatTup mkChunkifiedchunkify mkLHsSigTypemkLHsSigWcType mkHsSigEnv mkClassOpSigs mkLHsWrap mkHsWrapCo mkHsWrapCoR mkLHsWrapCo mkHsCmdWrap mkLHsCmdWrap mkHsWrapPat mkHsWrapPatCo mkHsDictLet mkFunBind mkTopFunBind mkHsVarBind mkVarBind mkPatSynBindisInfixFunBindmkSimpleGeneratedFunBindmkPrefixFunRhsmkMatchisUnliftedHsBindisBangedHsBindcollectLocalBinderscollectHsIdBinderscollectHsValBinderscollectHsBindBinderscollectHsBindsBinderscollectHsBindListBinderscollectMethodBinderscollectLStmtsBinderscollectStmtsBinderscollectLStmtBinderscollectStmtBinderscollectPatBinderscollectPatsBindershsGroupBindershsTyClForeignBindershsLTyClDeclBindershsForeignDeclsBindershsPatSynSelectorsgetPatSynBindshsDataFamInstBinderslStmtsImplicitshsValBindsImplicits lPatImplicits$fCollectPassGhcPass$fCollectPassGhcPass0$fCollectPassGhcPass1$fDataXXExprGhcTc$fEqIE$fEqIE0$fEqIE1$fDataIE $fDataIE0 $fDataIE1$fDataImportDecl$fDataImportDecl0$fDataImportDecl1$fDataAmbiguousFieldOcc$fDataAmbiguousFieldOcc0$fDataAmbiguousFieldOcc1$fDataFieldOcc$fDataFieldOcc0$fDataFieldOcc1$fDataConDeclField$fDataConDeclField0$fDataConDeclField1 $fDataHsArg $fDataHsArg0 $fDataHsArg1$fDataHsScaled$fDataHsScaled0$fDataHsScaled1 $fDataHsArrow$fDataHsArrow0$fDataHsArrow1 $fDataHsType $fDataHsType0 $fDataHsType1$fDataHsTyVarBndr$fDataHsTyVarBndr0$fDataHsTyVarBndr1$fDataHsForAllTelescope$fDataHsForAllTelescope0$fDataHsForAllTelescope1$fDataHsPatSigType$fDataHsPatSigType0$fDataHsPatSigType1$fDataHsWildCardBndrs$fDataHsWildCardBndrs0$fDataHsWildCardBndrs1$fDataHsImplicitBndrs$fDataHsImplicitBndrs0$fDataHsImplicitBndrs1$fDataLHsQTyVars$fDataLHsQTyVars0$fDataLHsQTyVars1$fDataHsRecFields$fDataHsRecFields0$fDataHsRecFields1$fDataListPatTc$fDataConPatTc $fDataCoPat $fDataPat0 $fDataPat1$fDataHsOverLit$fDataHsOverLit0$fDataHsOverLit1 $fDataHsLit $fDataHsLit0 $fDataHsLit1$fDataXBindStmtTc$fDataXBindStmtRn$fDataSyntaxExprTc$fDataSyntaxExprRn$fDataPendingTcSplice$fDataPendingRnSplice$fDataCmdTopTc$fDataRecordUpdTc$fDataRecordConTc$fDataArithSeqInfo$fDataArithSeqInfo0$fDataArithSeqInfo1$fDataHsBracket$fDataHsBracket0$fDataHsBracket1$fDataHsSplicedThing$fDataHsSplicedThing0$fDataHsSplicedThing1$fDataHsSplice$fDataHsSplice0$fDataHsSplice1$fDataHsMatchContext$fDataHsMatchContext0$fDataHsMatchContext1$fDataHsStmtContext$fDataHsStmtContext0$fDataHsStmtContext1$fDataApplicativeArg$fDataApplicativeArg0$fDataApplicativeArg1$fDataParStmtBlock$fDataParStmtBlock0$fDataParStmtBlock1$fDataParStmtBlock2$fDataRecStmtTc $fDataStmtLR $fDataStmtLR0 $fDataStmtLR1 $fDataStmtLR2 $fDataGRHS $fDataGRHS0 $fDataGRHS1 $fDataGRHSs $fDataGRHSs0 $fDataGRHSs1 $fDataMatch0 $fDataMatch1$fDataMatchGroup$fDataMatchGroup0$fDataMatchGroup1$fDataHsCmdTop$fDataHsCmdTop0$fDataHsCmdTop1 $fDataHsCmd $fDataHsCmd0 $fDataHsCmd1$fDataHsTupArg$fDataHsTupArg0$fDataHsTupArg1 $fDataHsExpr $fDataHsExpr0 $fDataHsExpr1 $fDataHsPragE$fDataHsPragE0$fDataHsPragE1$fDataRoleAnnotDecl$fDataRoleAnnotDecl0$fDataRoleAnnotDecl1 $fDataAnnDecl$fDataAnnDecl0$fDataAnnDecl1$fDataWarnDecl$fDataWarnDecl0$fDataWarnDecl1$fDataWarnDecls$fDataWarnDecls0$fDataWarnDecls1$fDataRuleBndr0$fDataRuleBndr1$fDataRuleDecl$fDataRuleDecl0$fDataRuleDecl1$fDataRuleDecls$fDataRuleDecls0$fDataRuleDecls1$fDataForeignDecl$fDataForeignDecl0$fDataForeignDecl1$fDataDefaultDecl$fDataDefaultDecl0$fDataDefaultDecl1$fDataDerivStrategy0$fDataDerivStrategy1$fDataDerivDecl$fDataDerivDecl0$fDataDerivDecl1$fDataInstDecl$fDataInstDecl0$fDataInstDecl1$fDataClsInstDecl$fDataClsInstDecl0$fDataClsInstDecl1 $fDataFamEqn $fDataFamEqn0 $fDataFamEqn1$fDataDataFamInstDecl$fDataDataFamInstDecl0$fDataDataFamInstDecl1$fDataTyFamInstDecl$fDataTyFamInstDecl0$fDataTyFamInstDecl1 $fDataConDecl$fDataConDecl0$fDataConDecl1$fDataHsDerivingClause$fDataHsDerivingClause0$fDataHsDerivingClause1$fDataHsDataDefn$fDataHsDataDefn0$fDataHsDataDefn1$fDataFamilyInfo$fDataFamilyInfo0$fDataFamilyInfo1$fDataInjectivityAnn0$fDataInjectivityAnn1$fDataFamilyDecl$fDataFamilyDecl0$fDataFamilyDecl1$fDataFamilyResultSig0$fDataFamilyResultSig1$fDataTyClGroup$fDataTyClGroup0$fDataTyClGroup1$fDataTyClDecl$fDataTyClDecl0$fDataTyClDecl1$fDataSpliceDecl$fDataSpliceDecl0$fDataSpliceDecl1 $fDataHsGroup$fDataHsGroup0$fDataHsGroup1 $fDataHsDecl $fDataHsDecl0 $fDataHsDecl1$fDataHsPatSynDir$fDataHsPatSynDir0$fDataHsPatSynDir1$fDataStandaloneKindSig$fDataStandaloneKindSig0$fDataStandaloneKindSig1$fDataFixitySig$fDataFixitySig0$fDataFixitySig1 $fDataSig $fDataSig0 $fDataSig1 $fDataIPBind $fDataIPBind0 $fDataIPBind1$fDataHsIPBinds$fDataHsIPBinds0$fDataHsIPBinds1$fDataPatSynBind$fDataPatSynBind0$fDataPatSynBind1$fDataPatSynBind2$fDataABExport$fDataABExport0$fDataABExport1$fDataHsBindLR$fDataHsBindLR0$fDataHsBindLR1$fDataHsBindLR2$fDataNHsValBindsLR$fDataNHsValBindsLR0$fDataNHsValBindsLR1$fDataHsValBindsLR$fDataHsValBindsLR0$fDataHsValBindsLR1$fDataHsValBindsLR2$fDataHsLocalBindsLR$fDataHsLocalBindsLR0$fDataHsLocalBindsLR1$fDataHsLocalBindsLR2HsModule hsmodLayout hsmodName hsmodExports hsmodImports hsmodDeclshsmodDeprecMessagehsmodHaddockModHeader$fOutputableHsModule$fDataHsModuleCtOrigin GivenOrigin OccurrenceOfOccurrenceOfRecSel AppOriginSpecPragOrigin TypeEqOrigin KindEqOrigin IPOccOriginOverLabelOrigin LiteralOrigin NegateOriginArithSeqOriginAssocFamPatOrigin SectionOrigin TupleOrigin ExprSigOrigin PatSigOrigin PatOriginProvCtxtOriginRecordUpdOrigin ViewPatOriginScOriginDerivClauseOrigin DerivOriginDCDerivOriginCoerceStandAloneDerivOrigin DefaultOriginDoOrigin DoPatOrigin MCompOriginMCompPatOriginIfOrigin ProcOrigin AnnOrigin FunDepOrigin1 FunDepOrigin2ExprHoleOriginTypeHoleOriginPatCheckOriginUnboundOccurrenceOf ListOrigin BracketOrigin StaticOriginShouldn'tHappenOriginInstProvidedOriginNonLinearPatternOriginUsageEnvironmentOf uo_actual uo_expecteduo_thing uo_visible SkolemInfoSigSkol SigTypeSkol ForAllSkol DerivSkolInstSkolInstSC FamInstSkolPatSkol ArrowSkolIPSkolRuleSkol InferSkol BracketSkolUnifyForAllSkol TyConSkol DataConSkol ReifySkol QuantCtxtSkolRuntimeUnkSkolUnkSkol UserTypeCtxt FunSigCtxt InfSigCtxt ExprSigCtxt KindSigCtxtStandaloneKindSigCtxt TypeAppCtxt ConArgCtxt TySynCtxt PatSynCtxt PatSigCtxt RuleSigCtxt ResSigCtxt ForSigCtxtDefaultDeclCtxt InstDeclCtxt SpecInstCtxt ThBrackCtxt GenSigCtxtGhciCtxt ClassSCCtxt SigmaCtxt DataTyCtxtDerivClauseCtxtTyVarBndrKindCtxt DataKindCtxt TySynKindCtxtTyFamResKindCtxtpprUserTypeCtxt isSigMaybe pprSkolInfopprSigSkolInfoisVisibleOrigintoInvisibleOrigin isGivenOrigin lexprCtOrigin exprCtOriginmatchesCtOrigin grhssCtOrigin pprCtOrigin$fOutputableSkolemInfo$fOutputableCtOriginCtLoc ctl_originctl_env ctl_t_or_k ctl_depth SubGoalDepth CtFlavourRole ShadowInfoWDerivWOnly CtFlavourGivenWantedDerived CtEvidenceCtGivenCtWanted CtDerived ctev_pred ctev_evarctev_loc ctev_dest ctev_noshTcEvDest EvVarDestHoleDest ImplicStatus IC_Solved IC_InsolubleIC_BadTelescope IC_Unsolvedics_dead ImplicationImplicic_tclvlic_skolsic_infoic_given ic_no_eqsic_warn_inaccessibleic_env ic_wantedic_binds ic_need_inner ic_need_outer ic_statusWantedConstraintsWC wc_simplewc_implwc_holes CtIrredStatus InsolubleCIS BlockedCISOtherCISHoleSortExprHoleTypeHoleHole hole_sorthole_occhole_tyhole_locQCInstQCIqci_evqci_tvsqci_pred qci_pend_scCtCDictCan CIrredCanCTyEqCan CFunEqCan CNonCanonical CQuantCancc_evcc_class cc_tyargs cc_pend_sc cc_statuscc_tyvarcc_rhs cc_eq_relcc_funcc_fskCtsXimkNonCanonicalmkNonCanonicalCt mkIrredCtmkGivens ctEvidencectLocsetCtLocctOriginctPredctEvIdmkTcEqPredLikeEv ctFlavourctEqRel tyCoVarsOfCttyCoVarsOfCtList tyCoVarsOfCtstyCoVarsOfCtsList tyCoVarsOfWCtyCoVarsOfWCList dropDerivedWCdropDerivedSimples isDroppableCtarisesFromGivens isGivenLoc isWantedCt isGivenCt isDerivedCt isCTyEqCanisCDictCan_MaybeisCFunEqCan_maybe isCFunEqCanisCNonCanonicalgetUserTypeErrorMsgisUserTypeErrorCtisPendingScDictisPendingScInstsuperClassesMightHelpgetPendingWantedScssingleCtandCts listToCtsctsEltsconsCtssnocCts extendCtsList andManyCtsemptyCts isEmptyCtspprCtsemptyWC mkSimpleWC mkImplicWC isEmptyWC isSolvedWCandWCunionsWC addSimples addImplics addInsolsaddHolesdropMisleadingisSolvedStatusisInsolubleStatusinsolubleImplic insolubleWC insolubleCt insolubleEqCtisOutOfScopeHoleimplicationPrototype pprEvVars pprEvVarThetapprEvVarWithTypewrapTypectEvPredctEvLoc ctEvOrigin ctEvEqRelctEvRolectEvTermctEvExpr ctEvCoercionctEvEvIdisWantedisGiven isDerivedisGivenOrWDeriv ctEvFlavourctEvFlavourRole ctFlavourRole eqCanRewriteeqCanRewriteFReqMayRewriteFRfunEqCanDischargefunEqCanDischargeFeqCanDischargeFRinitialSubGoalDepthbumpSubGoalDepthmaxSubGoalDepthsubGoalDepthExceeded mkKindLoc toKindLoc mkGivenLocctLocEnv ctLocLevel ctLocDepth ctLocOrigin ctLocSpanctLocTypeOrKind_maybe setCtLocSpanbumpCtLocDepthsetCtLocOriginupdateCtLocOrigin setCtLocEnvpprCtLoc$fOutputableHoleSort$fOutputableCtIrredStatus$fOutputableImplicStatus$fOutputableTcEvDest$fOutputableCtFlavour$fOutputableCtEvidence$fOutputableQCInst$fOutputableCt$fOutputableHole$fOutputableImplication$fOutputableWantedConstraints$fEqSubGoalDepth$fOrdSubGoalDepth$fOutputableSubGoalDepth $fEqCtFlavour$fEqShadowInfoaddHaddockToModule$fMonoidLowerLocBound$fSemigroupLowerLocBound$fMonoidUpperLocBound$fSemigroupUpperLocBound$fMonoidColumnBound$fSemigroupColumnBound$fMonoidLocRange$fSemigroupLocRange$fApplicativeHdkA$fHasHaddockGenLocated$fHasHaddockHsImplicitBndrs$fHasHaddockHsWildCardBndrs$fHasHaddockHsScaled$fHasHaddockGenLocated0$fHasHaddockGenLocated1$fHasHaddockGenLocated2$fHasHaddockHsDataDefn$fHasHaddockHsDecl$fHasHaddockGenLocated3$fHasHaddockGenLocated4$fHasHaddockGenLocated5$fHasHaddockGenLocated6$fHasHaddock[] $fFunctorHdkA $fFunctorHdkM$fApplicativeHdkM $fMonadHdkM$fSemigroupHasInnerDocs$fMonoidHasInnerDocs SumOrTupleSumTuplePV ImpExpQcSpec ImpExpQcName ImpExpQcTypeImpExpQcWildcard ImpExpSubSpec ImpExpAbs ImpExpAll ImpExpList ImpExpAllWith PatBuilder DisambECPInfixOpFunArg ecpFromCmd' ecpFromExp' mkHsLamPV mkHsLetPV superInfixOp mkHsOpAppPV mkHsCasePV mkHsLamCasePV superFunArg mkHsAppPV mkHsAppTypePVmkHsIfPVmkHsDoPV mkHsParPV mkHsVarPV mkHsLitPV mkHsOverLitPVmkHsWildCardPV mkHsTySigPVmkHsExplicitListPV mkHsSplicePV mkHsRecordPV mkHsNegAppPVmkHsSectionR_PV mkHsViewPatPV mkHsAsPatPV mkHsLazyPatPV mkHsBangPatPVmkSumOrTuplePVrejectPragmaPV DisambInfixOp mkHsVarOpPV mkHsConOpPVmkHsInfixHolePVECP runECP_PVTyElTyElOprTyElOpd TyElKindAppTyElUnpackedness RuleTyTmVar LRuleTyTmVarmkTyClDmkInstD mkClassDeclmkTyData mkTySynonymmkStandaloneKindSigmkTyFamInstEqn mkDataFamInst mkTyFamInst mkFamDecl mkSpliceDeclmkRoleAnnotDeclfromSpecTyVarBndrsfromSpecTyVarBndr cvTopDecls cvBindGroupmkPatSynMatchGroup mkConDeclH98 mkGadtDeclsetRdrNameSpace filterCTuple mkRuleBndrsmkRuleTyVarBndrscheckRuleTyVarBndrNamescheckRecordSyntaxcheckEmptyGADTscheckExpBlockArgumentscheckCmdBlockArguments checkContextcheckImportDecl checkPatterncheckPattern_msgplaceHolderPunRhs checkValDefcheckValSigLhsmkBangTymergeOps mergeDataConcheckMonadComprunECP_P ecpFromExp ecpFromCmd checkPrecPmkRecConstrOrUpdatemkRdrRecordUpdmkRdrRecordConmkInlinePragmamkImport parseCImportmkExport mkExtNamemkModuleImpExp mkTypeImpExpcheckImportSpecmkImpExpSubSpecwarnPrepositiveQualifiedModule#failOpNotEnabledImportQualifiedPostfailOpImportQualifiedTwicewarnStarIsType failOpFewArgsrunPV hintBangPatmkMultTystarSym forallSym$fOutputableTyEl$fOutputablePatBuilder $fMonadPPV $fMonadPV$fApplicativePV $fFunctorPV$fDisambInfixOpRdrName$fDisambInfixOpHsExpr$fDisambECPPatBuilder$fDisambECPHsExpr$fDisambECPHsCmd BlankSrcSpanNoBlankSrcSpan showAstData$fEqBlankSrcSpan$fShowBlankSrcSpan LRenamingRenaming renameFromrenameTo IncludeDeclidUnitId idModRenamingidSignatureInclude LHsUnitDecl HsUnitDeclDeclDIncludeDLHsUnitHsUnit hsunitName hsunitBody LHsModuleId HsModuleId HsModuleVarLHsModuleSubst HsModuleSubst LHsUnitIdHsUnitId HsComponentId hsPackageName hsComponentId$fOutputableHsComponentId $fBinaryBytes$fBinaryPatSynArgs$fBinaryPatSynDir$fBinaryTypeFamilyHead$fBinaryFamilyResultSig$fBinaryInjectivityAnn$fBinaryClause$fBinaryModuleInfo$fBinaryAnnLookup $fBinaryCon$fBinaryDecidedStrictness$fBinarySourceStrictness$fBinarySourceUnpackedness $fBinaryBang$fBinaryForeign$fBinaryCallconv$fBinaryPragma$fBinaryInline$fBinaryRuleMatch$fBinaryPhases$fBinaryRuleBndr$fBinaryFunDep$fBinaryTySynEqn $fBinaryMatch $fBinaryBody $fBinaryGuard$fBinaryDerivStrategy$fBinaryDerivClause$fBinaryOverlap $fBinaryDec $fBinaryExp $fBinaryPat $fBinaryStmt $fBinaryRange $fBinaryLit$fBinaryTyVarBndr $fBinaryTyLit $fBinaryType $fBinaryInfo$fBinaryModule$fBinaryPkgName$fBinaryNameFlavour$fBinaryModName $fBinaryLocPipepipeRead pipeWrite pipeLeftoversMsgQStateqsMap qsLocationqsPipe THResultTypeTHExpTHPatTHTypeTHDec THAnnWrapperTHResult THException THCompleteSerializableExceptionEUserInterrupt EExitCodeEOtherException EvalResult EvalException EvalSuccess EvalStatus_ EvalComplete EvalBreak EvalStatusEvalExprEvalThisEvalApp ResumeContextresumeBreakMVarresumeStatusMVarresumeThreadIdEvalOptsuseSandboxThread singleStepbreakOnException breakOnErrorTHMsg THMessageNewNameReport LookupNameReify ReifyFixity ReifyTypeReifyInstances ReifyRolesReifyAnnotations ReifyModuleReifyConStrictnessAddDependentFile AddTempFileAddModFinalizer AddCorePlugin AddTopDeclsAddForeignFilePath IsExtEnabled ExtsEnabled StartRecover EndRecover FailIfErrs RunTHDoneQResultQDone QExceptionQFailMessageShutdown RtsRevertCAFs InitLinker LookupSymbol LookupClosureLoadDLL LoadArchiveLoadObj UnloadObjAddLibrarySearchPathRemoveLibrarySearchPath ResolveObjsFindSystemLibrary CreateBCOsFreeHValueRefs AddSptEntry MallocData MallocStringsPrepFFIFreeFFIMkConInfoTableEvalStmt ResumeStmt AbandonStmt EvalStringEvalStringToStringEvalIO MkCostCentresCostCentreStackInfo NewBreakArrayEnableBreakpointBreakpointStatusGetBreakpointVarStartTHRunTHRunModFinalizers GetClosureSeq ResumeSeq getTHMessage putTHMessagetoSerializableExceptionfromSerializableException getMessage putMessage remoteCall remoteTHCall writePipereadPipe$fBinaryGenClosure$fBinaryPrimType$fBinaryClosureType$fBinaryStgInfoTable$fBinaryFunPtr $fBinaryPtr$fBinaryExitCode$fBinaryQResult$fBinaryEvalOpts$fBinaryEvalExpr$fBinarySerializableException$fBinaryEvalResult$fBinaryEvalStatus_$fBinaryTHResult$fBinaryTHResultType $fShowQState$fEnumTHResultType$fShowTHResultType$fGenericTHResultType$fGenericTHResult$fShowTHResult$fGenericEvalStatus_$fShowEvalStatus_$fGenericEvalResult$fShowEvalResult$fGenericSerializableException$fShowSerializableException$fGenericEvalExpr$fShowEvalExpr$fGenericEvalOpts$fShowEvalOpts$fGenericQResult $fShowQResult$fShowTHMessage $fShowMessage IServInstance iservPipe iservProcessiservLookupSymbolCacheiservPendingFrees IServConfigiservConfProgram iservConfOptsiservConfProfilediservConfDynamic iservConfHookiservConfTrace IServState IServPending IServRunningIServInterpExternalInterpHistoryhistoryApStackhistoryBreakInfohistoryEnclosingDeclsResume resumeStmt resumeContextresumeBindingsresumeFinalIds resumeApStackresumeBreakInfo resumeSpan resumeDecl resumeCCS resumeHistoryresumeHistoryIx BreakInfobreakInfo_modulebreakInfo_number ExecResult ExecComplete ExecBreak execResultexecAllocation breakNames breakInfo SingleStepRunToCompletionRunAndLogSteps ExecOptionsexecSingleStepexecSourceFileexecLineNumberexecWrapisStepemptySSaddToSS addListToSSssEltssizeSS$fNFDataSizedSeq$fBinarySizedSeq$fTraversableSizedSeq$fFoldableSizedSeq$fFunctorSizedSeq$fGenericSizedSeq$fShowSizedSeqmodBreaks_flagsmodBreaks_locsmodBreaks_varsmodBreaks_decls modBreaks_ccsmodBreaks_breakInfo CCostCentre BreakIndex CgBreakInfocgb_vars cgb_restyBCONPtr BCONPtrWord BCONPtrLbl BCONPtrItbl BCONPtrStrBCOPtr BCOPtrName BCOPtrPrimOp BCOPtrBCOBCOPtrBreakArray UnlinkedBCOunlinkedBCONameunlinkedBCOArityunlinkedBCOInstrsunlinkedBCOBitmapunlinkedBCOLitsunlinkedBCOPtrsItblPtrItblEnvFFIInfoCompiledByteCodebc_bcosbc_itblsbc_ffisbc_strs bc_breaksseqCompiledByteCodeemptyModBreaks$fNFDataBCONPtr$fOutputableUnlinkedBCO$fNFDataBCOPtr$fNFDataUnlinkedBCO$fOutputableCgBreakInfo$fOutputableCompiledByteCode $fShowItblPtr$fNFDataItblPtr $fShowFFIInfo$fNFDataFFIInfoSptEntryUnlinkedDotODotADotDLLBCOsLinkableLM linkableTimelinkableModulelinkableUnlinkedPersistentLinkerState closure_envitbl_env bcos_loaded objs_loaded pkgs_loadedtemp_sos DynLinkerdl_mpls$fOutputableSptEntry$fOutputableUnlinked$fOutputableLinkableExtensibleFieldsgetExtensibleFields FieldNameCompleteMatchMap CompleteMatchcompleteMatchConLikescompleteMatchTyConHsParsedModule hpm_module hpm_src_fileshpm_annotationsIfaceTrustInfo IsSafeImport AnyHpcUsageHpcInfo NoHpcInfohpcInfoTickCount hpcInfoHashhpcUsedSourceModifiedSourceUnmodifiedSourceUnmodifiedAndStable ModSummaryms_mod ms_hsc_src ms_location ms_hs_date ms_obj_date ms_iface_date ms_hie_date ms_srcimpsms_textual_imps ms_parsed_mod ms_hspp_file ms_hspp_opts ms_hspp_buf ModuleGraphEpsStats n_ifaces_in n_decls_in n_decls_out n_rules_in n_rules_out n_insts_in n_insts_outExternalPackageStateEPS eps_is_booteps_PITeps_free_holeseps_PTE eps_inst_enveps_fam_inst_env eps_rule_base eps_ann_enveps_complete_matcheseps_mod_fam_inst_env eps_statsPackageCompleteMatchMapPackageFamInstEnvPackageInstEnvPackageRuleBasePackageTypeEnvUsagePackageModuleUsageHomeModule UsageFileUsageMergedRequirementusg_mod usg_mod_hashusg_safe usg_mod_name usg_entities usg_exports usg_file_path usg_file_hash DependenciesDepsdep_modsdep_pkgs dep_orphs dep_finsts dep_plginsWhetherHasOrphansFixItem FixityEnv NoWarningsWarnAllWarnSome MonadThings lookupThinglookupId lookupDataCon lookupTyConTypeEnvInteractiveImportIIDeclIIModuleInteractiveContext ic_dflags ic_mod_index ic_imports ic_tythings ic_rn_gbl_env ic_instances ic_fix_env ic_default ic_resumeic_monad ic_int_printic_cwd ForeignStubsNoStubsCgGuts cg_module cg_tyconscg_binds cg_foreigncg_foreign_files cg_dep_pkgs cg_hpc_info cg_modBreakscg_spt_entriesModGuts mg_module mg_hsc_srcmg_loc mg_exportsmg_deps mg_usages mg_used_th mg_rdr_env mg_fix_envmg_tcsmg_insts mg_fam_insts mg_patsynsmg_rulesmg_binds mg_foreignmg_foreign_filesmg_warnsmg_annsmg_complete_sigs mg_hpc_info mg_modBreaks mg_inst_envmg_fam_inst_envmg_safe_haskell mg_trust_pkg mg_doc_hdr mg_decl_docs mg_arg_docsImportedModsValimv_nameimv_span imv_is_safe imv_is_hidingimv_all_exports imv_qualified ImportedByImportedByUserImportedBySystem ImportedMods ModDetails md_exportsmd_typesmd_insts md_fam_instsmd_rulesmd_annsmd_complete_sigs IfaceExport ModIface_ModIface mi_module mi_sig_of mi_hsc_srcmi_deps mi_usages mi_exports mi_used_th mi_fixitiesmi_warnsmi_annsmi_decls mi_globalsmi_insts mi_fam_instsmi_rulesmi_hpcmi_trust mi_trust_pkgmi_complete_sigs mi_doc_hdr mi_decl_docs mi_arg_docs mi_final_exts mi_ext_fieldsModIfaceBackend mi_iface_hash mi_mod_hash mi_flag_hash mi_opt_hash mi_hpc_hashmi_plugin_hash mi_orphan mi_finsts mi_exp_hashmi_orphan_hash mi_warn_fn mi_fix_fn mi_hash_fnPartialModIface FindResultFound NoPackage FoundMultipleNotFoundfr_pathsfr_pkgfr_mods_hiddenfr_pkgs_hidden fr_unusablesfr_suggestionsInstalledFindResultInstalledFoundInstalledNoPackageInstalledNotFound FinderCacheMetaHook MetaResult MetaRequestMetaEMetaPMetaTMetaDMetaAW HomeModInfohm_iface hm_details hm_linkablePackageIfaceTableHomePackageTableInputFileBufferTargetId TargetModule TargetFileTargettargetIdtargetAllowObjCodetargetContentsHscEnv hsc_dflags hsc_targets hsc_mod_graphhsc_IChsc_HPThsc_EPShsc_NChsc_FChsc_type_env_var hsc_interp hsc_dynLinker GhcApiError SourceError HscStatusHscNotGeneratingCode HscUpToDate HscUpdateBoot HscUpdateSig HscRecomp hscs_gutshscs_mod_locationhscs_mod_detailshscs_partial_ifacehscs_old_iface_hashhscs_iface_dflagsrunHscmkInteractiveHscEnvrunInteractiveHscmkSrcErrsrcErrorMessagesmkApiErr throwErrors throwOneErrorhandleSourceErrorprintOrThrowWarningshandleFlagWarningshscEPS pprTarget pprTargetIdemptyHomePackageTableemptyPackageIfaceTablepprHPT lookupHptlookupHptDirectlyeltsHpt filterHptallHptmapHpt delFromHptaddToHpt addListToHpt listToHptlookupHptByModulelookupIfaceByModulehptCompleteSigs hptInstanceshptRules metaRequestE metaRequestP metaRequestT metaRequestD metaRequestAWprepareAnnotationsmi_bootmi_fixmi_semantic_module mi_free_holesrenameFreeHolesemptyPartialModIfaceemptyFullModIfacemkIfaceHashCacheemptyModDetailsimportedByUser appendStubCemptyInteractiveContexticInteractiveModule icInScopeTTs icPrintUnqualextendInteractiveContextextendInteractiveContextWithIdssetInteractivePackagesetInteractivePrintNameicExtendGblRdrEnvsubstInteractiveContextmkPrintUnqualified mkQualModule mkQualPackagepkgQualimplicitTyThingsimplicitClassThingsimplicitTyConThingsisImplicitTyThingtyThingParent_maybetyThingsTyCoVarstyThingAvailInfo emptyTypeEnv typeEnvElts typeEnvTyConstypeEnvCoAxioms typeEnvIdstypeEnvPatSynstypeEnvDataConstypeEnvClasses mkTypeEnvmkTypeEnvWithImplicitstypeEnvFromEntities lookupTypeEnv extendTypeEnvextendTypeEnvListextendTypeEnvWithIds plusTypeEnv lookupTypelookupTypeHscEnv tyThingTyContyThingCoAxiomtyThingDataContyThingConLike tyThingIdmkIfaceWarnCacheemptyIfaceWarnCache plusWarnsmkIfaceFixCacheemptyFixityEnv lookupFixitynoDependencies addEpsInStats updNameCachemkSOName mkHsSONamesoExtneedsTemplateHaskellOrQQmapMG mgBootModulesmgModSummaries mgElemModulemgLookupModuleemptyMGisTemplateHaskellOrQQNonBootextendMG mkModuleGraphms_installed_mod ms_mod_namems_imps home_impsms_home_allimpsms_home_srcimps ms_home_imps msHsFilePath msHiFilePath msObjFilePath isBootSummary showModMsg emptyHpcInfo isHpcUsed getSafeMode setSafeModenoIfaceTrustInfotrustInfoToNumnumToTrustInfoisObjectLinkable linkableObjsisObjectisInterpretable nameOfObjectbyteCodeOfObjectmkCompleteMatchMapextendCompleteMatchMapphaseForeignLanguageemptyExtensibleFieldsreadIfaceField readFieldreadIfaceFieldWithwriteIfaceField writeFieldwriteIfaceFieldWith deleteFielddeleteIfaceField$fExceptionSourceError$fShowSourceError$fExceptionGhcApiError$fShowGhcApiError$fOutputableTargetId$fOutputableTarget$fOutputableInteractiveImport$fMonadThingsReaderT$fBinaryWarnings$fOutputableFixItem$fBinaryDependencies $fBinaryUsage$fBinaryIfaceTrustInfo$fOutputableIfaceTrustInfo$fOutputableModSummary$fOutputableCompleteMatch$fNFDataExtensibleFields$fBinaryExtensibleFields$fNFDataModIface_$fBinaryModIface_$fHasDynFlagsHsc $fMonadIOHsc $fMonadHsc$fApplicativeHsc $fFunctorHsc $fEqUsage$fEqDependencies $fEqWarnings $fEqTargetIdparseModuleNoHaddockparseSignature parseImportparseStatementparseDeclarationparseExpression parsePatternparseTypeSignature parseStmtparseIdentifier parseType parseBackpack parseHeader parseModule getImports mkPrelImportsgetOptionsFromFile getOptionscheckProcessArgsResultoptionsErrorMsgsPipelineOutput Temporary Persistent SpecificFile PipeStatehsc_env maybe_loc foreign_osifacePipeEnv stop_phase src_filename src_basename src_suffix output_spec PhasePlus RealPhaseHscOut CompPipelineevalPpipeStateDynFlagspipeStateModIface getPipeEnv getPipeState setDynFlagssetModLocation setForeignOssetIface$fOutputablePhasePlus$fHasDynFlagsCompPipeline$fMonadIOCompPipeline$fMonadCompPipeline$fApplicativeCompPipeline$fFunctorCompPipeline$fShowPipelineOutput WarnErrLoggerGhcTunGhcTSessionGhcunGhcGhcMonad getSession setSession withSessiongetSessionDynFlags modifySessionwithTempSession logWarnings reflectGhcreifyGhcliftGhcTprintExceptiondefaultWarnErrLogger $fGhcMonadGhc$fHasDynFlagsGhc $fMonadFixGhc $fMonadIOGhc $fMonadGhc$fApplicativeGhc$fGhcMonadGhcT$fHasDynFlagsGhcT $fMonadIOGhcT $fMonadGhcT$fApplicativeGhcT $fFunctorGhcT$fMonadThrowGhcT$fMonadCatchGhcT$fMonadMaskGhcT $fFunctorGhc$fMonadThrowGhc$fMonadCatchGhc$fMonadMaskGhcCoreMPreInlineUnconditionallyPostInlineUnconditionally UnfoldingDone RuleFiredLetFloatFromLet EtaExpansion EtaReduction BetaReduction CaseOfCase KnownBranch CaseMergeAltMergeCaseElim CaseIdentityFillInCaseDefaultSimplifierDone SimplCountCorePluginPassfloatOutLambdasfloatOutConstantsfloatOutOverSatAppsfloatToTopLevelOnly SimplModesm_namessm_phase sm_dflagssm_rules sm_inline sm_case_case sm_eta_expandCoreToDoCoreDoSimplifyCoreDoPluginPassCoreDoFloatInwardsCoreDoFloatOutwardsCoreLiberateCaseCoreDoPrintCoreCoreDoStaticArgsCoreDoCallArity CoreDoExitify CoreDoDemand CoreDoCprCoreDoWorkerWrapperCoreDoSpecialisingCoreDoSpecConstrCoreCSECoreDoRuleCheck CoreDoNothing CoreDoPasses CoreDesugarCoreDesugarOptCoreTidyCorePrep CoreOccurAnalpprPassDetailsrunWhenrunMaybe bindsOnlyPass simplCountNzeroSimplCountisZeroSimplCounthasDetailedCountsdoFreeSimplTick doSimplTickplusSimplCount pprSimplCountrunCoreMliftIOWithCount getHscEnv getRuleBasegetVisibleOrphanModsgetPrintUnqualified getSrcSpanM addSimplCount getUniqMaskgetPackageFamInstEnvgetAnnotationsgetFirstAnnotationsputMsgS errorMsgSfatalErrorMsgSdebugTraceMsgS$fOutputableSimplMode$fOutputableFloatOutSwitches $fOrdTick$fEqTick$fOutputableTick$fHasModuleCoreM$fHasDynFlagsCoreM$fMonadIOCoreM$fMonadUniqueCoreM$fMonadPlusCoreM$fAlternativeCoreM$fApplicativeCoreM $fMonadCoreM$fOutputableCoreToDo$fFunctorCoreM FloatBindFloatLet FloatCase sortQuantVars mkCoreAppmkWildEvBindermkWildValBinder mkWildCase mkIfThenElsecastBottomExprmkUncheckedIntExpr mkIntExprInt mkIntegerExpr mkNaturalExprmkStringExprFSmkStringExprFSWithmkCoreVarTupTy mkCoreTup mkCoreUbxTupmkCoreTupBoxity mkCoreUbxSummkBigCoreVarTupmkBigCoreVarTup1mkBigCoreVarTupTy mkBigCoreTupmkBigCoreTupTyunitExprmkTupleSelectormkTupleSelector1mkSmallTupleSelector mkTupleCasemkSmallTupleCase wrapFloat wrapFloats floatBindings mkNilExpr mkConsExpr mkListExpr mkFoldrExpr mkBuildExpr mkNothingExpr mkJustExprmkRuntimeErrorAppmkImpossibleExprerrorIdsrEC_SEL_ERROR_IDrUNTIME_ERROR_IDrEC_CON_ERROR_ID pAT_ERROR_IDnO_METHOD_BINDING_ERROR_IDnON_EXHAUSTIVE_GUARDS_ERROR_ID tYPE_ERROR_IDaBSENT_SUM_FIELD_ERROR_IDaBSENT_ERROR_IDmkAbsentErrorApp$fOutputableFloatBind simpleOptExprsimpleOptExprWith simpleOptPgmjoinPointBinding_maybejoinPointBindings_maybeexprIsConApp_maybeexprIsLiteral_maybeexprIsLambda_maybe pushCoArg pushCoTyArg pushCoValArgcollectBindersPushingCo$fOutputableSimpleOptEnvCallCtxt BoringCtxtRhsCtxt DiscArgCtxt RuleArgCtxt ValAppCtxtCaseCtxt ArgSummaryTrivArg NonTrivArgValueArgmkFinalUnfoldingmkCompulsoryUnfoldingmkSimpleUnfoldingmkDFunUnfoldingmkWwInlineRulemkWorkerUnfoldingmkInlineUnfoldingWithAritymkInlinableUnfolding specUnfoldingmkCoreUnfoldinginlineBoringOkcouldBeSmallEnoughToInlinesmallEnoughToInlinecertainlyWillInlinecallSiteInline$fOutputableExprSize$fOutputableArgSummary$fOutputableCallCtxtEnableBignumRules primOpRules builtinRules caseRules$fMonadPlusRuleM$fAlternativeRuleM$fMonadFailRuleM $fMonadRuleM$fApplicativeRuleM$fFunctorRuleMDCB wiredInIds ghcPrimIds mkDictSelRhsvanillaDataConBoxer mkDataConRepunwrapNewTypeBodywrapFamInstBody mkFCallId mkDictFunId mkDictFunTy coerceNamenoinlineIdName proxyHashId nullAddrIdseqIdlazyId noinlineIdcoerceIdrealWorldPrimId voidArgIdcoercionTokenId toIfaceTvBndrtoIfaceTvBndrs toIfaceIdBndr toIfaceBndrtoIfaceTyCoVarBinders toIfaceKind toIfaceType toIfaceTyVartoIfaceTyCon_nametoIfaceCoerciontidyToIfaceTypetidyToIfaceContextpatSynToIfaceDecl toIfaceBangtoIfaceSrcBangtoIfaceLetBndrtoIfaceIdDetails toIfaceIdInfo toIfUnfolding toIfaceExprtoIfaceTickish toIfaceBind toIfaceAlt toIfaceCon toIfaceApp toIfaceVar toIfaceLFInfoendPass endPassIOdumpPassResultlintPassResultlintInteractiveExprlintCoreBindings lintUnfoldinglintExpr lintAxioms lintAnnots$fHasDynFlagsLintM$fMonadFailLintM $fMonadLintM$fApplicativeLintM$fFunctorLintM$fEqStaticPtrCheck RoleAnnotEnvTcPluginResultTcPluginContradiction TcPluginOkTcPlugin tcPluginInit tcPluginSolve tcPluginStop TcPluginMTcPluginSolver TcPatSynInfoTPSI patsig_namepatsig_implicit_bndrspatsig_univ_bndrs patsig_reqpatsig_ex_bndrs patsig_provpatsig_body_ty TcIdSigInstTISI sig_inst_sigsig_inst_skolssig_inst_theta sig_inst_tau sig_inst_wcs sig_inst_wcx TcIdSigInfo CompleteSig PartialSigsig_bndrsig_ctxtsig_loc psig_name psig_hs_ty TcSigInfoTcIdSig TcPatSynSigTcSigFun WhereFrom ImportByUserImportBySystemImportByPlugin ImportAvailsimp_mods imp_dep_pkgsimp_trust_pkgsimp_trust_own_pkg imp_orphs imp_finsts ClosedTypeIdRhsNames IsGroupClosed IdBindingInfo NotLetBound ClosedLet NonClosedLet PromotionErrTyConPEClassPE FamDataConPEConstrainedDataConPEPatSynPE RecDataConPE NoDataKindsTC NoDataKindsDC TcTyThingAGlobalATcIdATyVarATcTyCon APromotionErrtct_idtct_info ArrowCtxt NoArrowCtxtThLevel PendingStuffRnPendingUntypedRnPendingTyped TcPendingThStageSplice RunSpliceCompBrack SpliceTypeTypedUntypedTcBinderTcIdBndrTcIdBndr_ExpTypeTcTvBndr TcBinderStackTcIdSetTcIdTcRef TcTypeEnvErrCtxttcl_loctcl_ctxttcl_in_gen_code tcl_tclvl tcl_th_ctxt tcl_th_bndrstcl_arrow_ctxttcl_rdrtcl_env tcl_usage tcl_bndrstcl_lietcl_errs SelfBootInfo NoSelfBootSelfBootsb_mdssb_tcs RecFieldEnvtcg_modtcg_semantic_modtcg_src tcg_rdr_env tcg_default tcg_fix_env tcg_field_env tcg_type_env tcg_inst_envtcg_fam_inst_env tcg_ann_env tcg_exports tcg_importstcg_dus tcg_used_grestcg_keep tcg_th_usedtcg_th_splice_used tcg_dfun_n tcg_mergedtcg_rn_exportstcg_rn_imports tcg_rn_declstcg_dependent_filestcg_th_topdeclstcg_th_foreign_filestcg_th_topnamestcg_th_modfinalizerstcg_th_coreplugins tcg_th_statetcg_th_remote_state tcg_ev_binds tcg_tr_module tcg_bindstcg_sigs tcg_imp_specs tcg_warnstcg_annstcg_tcs tcg_insts tcg_fam_insts tcg_rules tcg_fords tcg_patsyns tcg_doc_hdrtcg_hpc tcg_self_boottcg_main tcg_safeInfertcg_tc_pluginstcg_hf_plugins tcg_top_loc tcg_static_wctcg_complete_matches tcg_cc_stFrontendResultFrontendTypecheck DsMetaValDsBoundDsSplice DsMetaEnvDsLclEnvdsl_metadsl_loc dsl_deltasDsGblEnvds_modds_fam_inst_env ds_unqualds_msgs ds_if_envds_complete_matchesds_cc_stIfLclEnvif_modif_bootif_loc if_nsubstif_implicits_env if_tv_env if_id_envIfGblEnvif_doc if_rec_typesEnvenv_topenv_umenv_gblenv_lclTcMRnMDsMIfLIfGIfMTcRnTcRnIf NameShape ns_mod_name ns_exportsns_maptcVisibleOrphanMods pushErrCtxtpushErrCtxtSameOriginremoveBindingShadowing getPlatformtopStage topAnnStagetopSpliceStageimpLevel outerLevelthLevelpprTcTyThingCategory pprPECategory mkModDeps modDepsEltsemptyImportAvailsplusImportAvails isPartialSighasCompleteSig runTcPluginMunsafeTcPluginTcMgetEvBindsTcPluginMmkRoleAnnotEnvemptyRoleAnnotEnvlookupRoleAnnot getRoleAnnots lintGblEnv$fContainsModuleEnv$fContainsDynFlagsEnv$fContainsModuleDsGblEnv$fHasOccNameTcBinder$fOutputableTcBinder$fOutputableThStage$fOutputablePromotionErr$fOutputableIdBindingInfo$fOutputableTcTyThing$fOutputableWhereFrom$fOutputableTcIdSigInfo$fOutputableTcIdSigInst$fOutputableTcPatSynInfo$fOutputableTcSigInfo$fMonadFailTcPluginM$fMonadTcPluginM$fApplicativeTcPluginM$fContainsModuleTcGblEnv$fFunctorTcPluginMHoleFitPluginR hfPluginInit hfPluginRun hfPluginStop candPlugin fitPlugin FitPlugin CandPluginHoleFit RawHoleFithfIdhfCandhfTypehfRefLvlhfWrap hfMatcheshfDocHoleFitCandidateIdHFCand NameHFCand GreHFCand TypedHoleth_relevant_cts th_implicsth_holepprHoleFitCandhfIsLcl$fOutputableTypedHole$fOrdHoleFitCandidate$fHasOccNameHoleFitCandidate$fNamedThingHoleFitCandidate$fOutputableHoleFitCandidate $fOrdHoleFit$fOutputableHoleFit $fEqHoleFit$fEqHoleFitCandidateFrontendPluginfrontendFrontendPluginAction CorePluginPluginRecompileForceRecompileNoForceRecompileMaybeRecompilespPluginlpPluginlpModulePluginWithArgspaPlugin paArgumentsinstallCoreToDostcPlugin holeFitPlugindynflagsPluginpluginRecompileparsedResultActionrenamedResultActiontypeCheckResultActionspliceRunActioninterfaceLoadActionCommandLineOption lpModuleNamepluginRecompile' purePlugin impurePlugin flagRecompile defaultPluginkeepRenamedSourceplugins withPlugins mapPlugins withPlugins_defaultFrontendPlugin$fMonoidPluginRecompile$fSemigroupPluginRecompile$fOutputablePluginRecompiledsForeignsHooktcForeignImportsHooktcForeignExportsHookhscFrontendHookhscCompileCoreExprHookghcPrimIfaceHook runPhaseHook runMetaHooklinkHookrunRnSpliceHookgetValueSafelyHookcreateIservProcessHook stgToCmmHookcmmToRawCmmHook getHooked lookupHookassertControl.ExceptionallowInterruptcatchesHandlerbracketOnErrorbracket_finallybracket onExceptiontryJust mapException handleJusthandle catchJustPatternMatchFail RecSelError RecConError RecUpdError NoMethodError TypeErrorNonTerminationNestedAtomicallyasyncExceptionFromExceptionasyncExceptionToExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAllocationLimitExceededCompactionFailedAssertionFailedSomeAsyncExceptionAsyncException UserInterrupt ThreadKilled StackOverflow HeapOverflowArrayExceptionIndexOutOfBoundsUndefinedElementevaluateuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingStatethrowIOcatch MaskingStateMaskedUninterruptibleUnmaskedMaskedInterruptible IOException GHC.Exceptionthrow ErrorCallErrorCallWithLocationArithExceptionRatioZeroDenominatorDenormal DivideByZeroLossOfPrecision UnderflowOverflow SomeExceptionfilterMmapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustbytestring-0.10.10.0Data.ByteString.Internal ByteStringData.ByteString.Short.InternalShortByteStringGHC.IO.Handle.TypesHandleData.Typeable.InternalTypeablealgTcStupidThetadowngradeRole_maybe UnitInfoMapPreloadUnitClosuredirectory-1.3.6.0System.DirectorygetTemporaryDirectory exnDmdTypecollectValBindersunboxedTupleSumKind&&& exprOrphNamesD:R:XRhsClosureCodeGeneqPmLit eqConLike AsmTempLabelAsmTempDerivedLabelIdLabelLocalBlockLabelAddr#FixIOException GHC.Stack.CCSHappyStkmkSmallTupleSelector1