Racket's compilation phases are much better than Common Lisp's "one big mess" approach. Global mutables visible at compile-time only? Importing modules for use in macros only? Separate compilation where the compile-time mutability in one module can never sip into another? Fuck yeah to all of that. They've got like unlimited number of phases, i.e. 0 is runtime, 1 is expansion time, 2 is the expansion time of macros used in phase 1, etc.
I made a typeclass system with Racket macros in a jiffy, and it's even better than in Haskell as it has first-class instances. You can inspect instances, modify them, choose which one to call, etc.
Type Checker: type mismatch expected: Flonum given: Number
Holy fuck, flonums don't unify with numbers, how retarded is that? These retards couldn't overload sqrt. No wonder LITHP idiots hate static typing - they suck at it!
Name:
Anonymous2014-11-30 15:18
Holy hairy armpit sweat smell in a perfume jar, Racket is indeed retarded and made for retards.
Type Checker: type mismatch expected: Flonum given: Positive-Byte in: 3
3 doesn't unify with Flonum. 3. Flonum. Type error. F u c k i n g g a y r e t a r d s.
but i bet she forgets once in a while, she's always busy with something, plus she is really tomboyish anyway, even without hair her armpit would get pretty sweaty from al the activity she does, must be a lovely fragance
C implicitly converts between floats and integers, despite they being completely different and incompatible objects, while conversion between them incurs high runtime cost. This leads to inefficient code, confusion and complicates semantics.
>>18 ...whereas in Haskell the dispatch is static and the most efficient function is chosen automatically. So one can take sqrt 5 and get an answer that makes sense. Damn, typeclasses and ad hoc polymorphism are great.