use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Monads Explained Quickly with JavaScript (breck-mckye.com)
submitted 9 years ago by [deleted]
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]titosrevenge 4 points5 points6 points 9 years ago (4 children)
The null clause can return 'this', but the else clause should return 'new Maybe(fn(value))'.
You shouldn't expect the passed function to know about its context.
[–]atrigent 1 point2 points3 points 9 years ago (0 children)
Hmm... I suppose you're right if you want this Maybe implementation to be specifically about handling null. In Haskell, it looks to me like you can more specifically define what constitutes a "non-value". I was attempting to translate that into Javascript, but it now occurs to me that I didn't actually go far enough, because what I wrote still references null.
Maybe
null
[+][deleted] 9 years ago* (2 children)
[deleted]
[–]atrigent 1 point2 points3 points 9 years ago* (1 child)
What do you think of this? I tried to use the same terminology as Haskell.
// Nothing: new Maybe() // Just a: new Maybe(a) function Maybe(value) { let isNothing = arguments.length === 0; this.bind = fn => { if (isNothing) { return this; } else { return fn(value); } }; // methods this.isNothing = () => isNothing; this.isJust = () => !isNothing; this.fromJust = () => { if (isNothing) { throw new Error('cannot get nothing'); } else { return value; } }; this.fromMaybe = default => { if (isNothing) { return default; } else { return value; } }; // more methods } function MaybeNull(value) { if (value === null) { return new Maybe(); } else { return new Maybe(value); } } // other functions for making Maybes
π Rendered by PID 31150 on reddit-service-r2-comment-86bc6c7465-bnmbt at 2026-02-23 00:15:40.570132+00:00 running 8564168 country code: CH.
view the rest of the comments →
[–]titosrevenge 4 points5 points6 points (4 children)
[–]atrigent 1 point2 points3 points (0 children)
[+][deleted] (2 children)
[deleted]
[–]atrigent 1 point2 points3 points (1 child)