Jump to content

Monads/List monad: Difference between revisions

m
→‎{{header|Raku}}: Fix comments: Perl 6 --> Raku
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
m (→‎{{header|Raku}}: Fix comments: Perl 6 --> Raku)
Line 587:
=={{header|Raku}}==
(formerly Perl 6)
Perl 6Raku 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 6Raku. Most item types and Listy types have a Cool role in Perl 6Raku. (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 6Raku 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 6Raku) doesn't mean it can't be done.
 
In Perl 6Raku, bind is essentially map. I'll shadow map here but again, it '''removes''' capability, not adds it. Perl 6Raku also provided "hyper" operators which will descend into data structures and apply an operator / function to each member of that data structure.
 
Here's a simple, if contrived example. take the numbers from 0 to 9, add 3 to each, find the divisors of those sums and print the list of divisors for each sum... in base 2. Again, a bind function was implemented but it is more limited than if we just used map directly. The built in map method will work with either items or lists, here we need to implement a multi sub to handle either.
2,392

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.