Re:Programming languages and their relationship styles
by Dunbar on Thursday February 17, 2011 @07:50PM
(#2233656)
Any language that is only pure is about as useful as write-only memory.
Haskell was historically pure and had side effects added as a way to interact with the world. The language enforces (discounting unsafePerformIO) the separation of pure and impure code. That is sufficient to label any practical language pure.
Re:Programming languages and their relationship styles
by jmillikin on Thursday February 17, 2011 @08:52PM
(#2233835)
> Any language that is only pure is about as useful as write-only memory.
That's actually not true -- you can write the core of a system in a pure language, then use that pure core as a library in larger applications. Pure languages like Coq and Agda are often not Turing-complete, so various sorts of verification and proofs can be applied more easily.
Some people get confused between purity and expressiveness. Inexpressive languages like C require using impure constructs to represent fundamentally pure constructs. More expressive languages like Python don't need as many impure workarounds. Haskell, as a very expressive language, can do amazing things in pure code that other languages must resort to impurity for.
If you want a pure language, look into Agda or Coq.