What is the precise promise/guarantee the Haskell language provides with respect to referential transparency? At least the Haskell report does not mention this notion.
C
A another type has been chosen, because !! requires an Int. The full computation now uses Int instead of Integer.
!!
Int
Integer
λ> ( (7^7^7`mod`5`mod`2 :: Int)==1, [False,True]!!(7^7^7`mod`5`mod`2) ) (False,False)