I've been thinking about the best approach to implement pure function verification in the Scala compiler. An approach similar to the one in D would fit a lot better than the one used in Haskell (which would break all existing code and cause some problems due to strict evaluation). A solution using annotations would be quite simple to implement:
M. Steindorfer, и J. Vinju. Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, стр. 783--800. New York, NY, USA, ACM, (2015)
M. Odersky, и A. Moors. IARCS Annual Conference on Foundations of Software Technology and Theoretical Computer Science, том 4 из Leibniz International Proceedings in Informatics (LIPIcs), стр. 427--451. Dagstuhl, Germany, Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik, (2009)
V. Ureche, C. Talau, и M. Odersky. Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages &\#38; Applications, стр. 73--92. ACM, (2013)
A. Sewe, M. Mezini, A. Sarimbekov, и W. Binder. Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, стр. 657--676. ACM, (2011)