4 ms·
You can use undefined, the nearest equivalent to null in Haskell, anywhere you like and it is just as bad as using null! However, typically you don't because as
by timclark 15y ago
You can use undefined, the nearest equivalent to null in Haskell, anywhere you like and it is just as bad as using null! However, typically you don't because as you point out Maybe is a better alternative.
- koenigdavidmj 15y agoShhhhh. That's probably a good thing not to say loudly, or people will try to use it. (I didn't know about it, so it obviously has not hurt me.)
- masklinn 15y ago`undefined` does not behave like a null though, it behaves much like `error` (it's basically `assert False`), it lets code typecheck but it will instantly throw an exception when executed. It's usually used to stub code during development in TDD-type scenarios: myFunction = undefined myOtherFunction foo = doSomethingWith value where value = myFunction foo will typecheck letting you fail your tests. You can't have `undefined` "pass through" your code the way `null` does.
- joeyh 15y agoSure you can, it doesn't error until it's evaluated, and haskell is lazy, so the failure can occur some distance from the original undefined, and can occur only some of the time.
- masklinn 15y ago> You can use undefined, the nearest equivalent to null in Haskell I'm not sure you can say that. `undefined` is a case of `error`, so it will blow up any time it's encountered (it's often used to stub code) not just when you try to use it, it's closer to putting a `throw` than to putting a `null`.
- Martijn 15y agoDon Stewart on undefined vs. null: http://stackoverflow.com/a/3963464/17439 http://stackoverflow.com/a/3963464/17439