Monads/List monad: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: Add Perl 6 example)
m (→‎{{header|Perl 6}}: Clarify expectations slightly)
Line 338: Line 338:


=={{header|Perl 6}}==
=={{header|Perl 6}}==
Perl 6 does not have Monad types built in but they can be emulated/implemented without a great deal of difficulty. List Monads especially are of questionable utility in Perl 6. Most item types and Listy types have a Cool role in Perl 6. (Cool being a play on the slang term "cool" as in: "That's cool with me." (That's ok with me). So Ints are pretty much treated like one item lists for operators that expect lists. ("I want a list." "Here's an Int." "Ok, that's cool.") Explicitly wrapping an Int into a List is worse than useless. It won't do anything Perl 6 can't do natively, and will likely '''remove''' some functionality that it would normally have. That being said, just because it is a bad idea (in Perl 6) doesn't mean it can't be done.
Perl 6 does not have Monad types built in but they can be emulated/implemented without a great deal of difficulty. List Monads especially are of questionable utility in Perl 6. Most item types and Listy types have a Cool role in Perl 6. (Cool being a play on the slang term "cool" as in: "That's cool with me." (That's ok with me). So Ints are pretty much treated like one item lists for operators that work with lists. ("I work on a list." "Here's an Int." "Ok, that's cool.") Explicitly wrapping an Int into a List is worse than useless. It won't do anything Perl 6 can't do natively, and will likely '''remove''' some functionality that it would normally have. That being said, just because it is a bad idea (in Perl 6) doesn't mean it can't be done.


In Perl 6, bind is essentially map. I'll shadow map here but again, it '''removes''' capability, not adds it. Perl 6 also provided "hyper" operators which will descend into data structures and apply an operator / function to each member of that data structure.
In Perl 6, bind is essentially map. I'll shadow map here but again, it '''removes''' capability, not adds it. Perl 6 also provided "hyper" operators which will descend into data structures and apply an operator / function to each member of that data structure.