April 21, 2015 Re: [OT] C# 6.0 ?. null propagation operator | ||||
---|---|---|---|---|
| ||||
Posted in reply to deadalnix | On Monday, 20 April 2015 at 21:22:53 UTC, deadalnix wrote:
> ...
> maybe(userManager).CurrentUser.GetRole().Name ?
> ...
Where can I find this "maybe" monad implementation?
|
April 21, 2015 Re: [OT] C# 6.0 ?. null propagation operator | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jakob Ovrum | On Monday, 20 April 2015 at 12:16:21 UTC, Jakob Ovrum wrote: > On Monday, 20 April 2015 at 08:24:08 UTC, weaselcat wrote: >> http://www.reddit.com/r/programming/comments/335b1s/the_new_operator_in_c_6/ >> >> of interesting note was the nim sample on how to implement the same thing in nim in 2 lines of code >> >> template `?.`(a, b): expr = >> if a != nil: a.b else: nil >> >> template `??`(a, b): expr = >> if a != nil: a else: b > > This is what I came up with for D: > > https://gist.github.com/JakobOvrum/7e3a7bc130ab7db28de3 > > Meh. Mine: http://dump.thecybershadow.net/f8a172455ca239c35146f5dafdc7d1bc/test.d |
April 21, 2015 Re: [OT] C# 6.0 ?. null propagation operator | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vladimir Panteleev | On Tuesday, 21 April 2015 at 03:35:49 UTC, Vladimir Panteleev wrote:
> On Monday, 20 April 2015 at 12:16:21 UTC, Jakob Ovrum wrote:
> Mine:
>
> http://dump.thecybershadow.net/f8a172455ca239c35146f5dafdc7d1bc/test.d
And we have a winner!
|
April 21, 2015 Re: [OT] C# 6.0 ?. null propagation operator | ||||
---|---|---|---|---|
| ||||
Posted in reply to rumbu | On Monday, 20 April 2015 at 20:09:59 UTC, rumbu wrote:
> On Monday, 20 April 2015 at 15:37:02 UTC, Atila Neves wrote:
>> On Monday, 20 April 2015 at 12:16:21 UTC, Jakob Ovrum wrote:
>>> On Monday, 20 April 2015 at 08:24:08 UTC, weaselcat wrote:
>>>> http://www.reddit.com/r/programming/comments/335b1s/the_new_operator_in_c_6/
>>>>
>>>> of interesting note was the nim sample on how to implement the same thing in nim in 2 lines of code
>>>>
>>>> template `?.`(a, b): expr =
>>>> if a != nil: a.b else: nil
>>>>
>>>> template `??`(a, b): expr =
>>>> if a != nil: a else: b
>>>
>>> This is what I came up with for D:
>>>
>>> https://gist.github.com/JakobOvrum/7e3a7bc130ab7db28de3
>>>
>>> Meh.
>>
>> Here's mine:
>>
>> https://gist.github.com/atilaneves/727d63f0a7029032d7ac
>
>
> I fail to understand Atila example. Just to be sure:
>
> C#:
> var roleName = userManager.CurrentUser?.GetRole()?.Name;
>
> D (Jakob):
> auto roleName = userManager.getOrNull!("CurrentUser", "GetRole", "Name");
>
> D (Atila):
> auto roleName = ?
I was trying to write a Maybe monad in D, not make it easy to use.
An easy to use solution would probably make use of opDispatch. But...:
auto roleName = userManager.bind!(a => a.CurrentUser.bind!(b => b.GetRole.bind!(c => c.Name);
//roleName's type is Maybe!string.
The only reason monads are readable in Haskell is due to "do" syntax sugar.
|
April 21, 2015 Re: [OT] C# 6.0 ?. null propagation operator | ||||
---|---|---|---|---|
| ||||
Posted in reply to JT | On Tuesday, 21 April 2015 at 02:00:49 UTC, JT wrote:
> On Monday, 20 April 2015 at 21:22:53 UTC, deadalnix wrote:
>> ...
>> maybe(userManager).CurrentUser.GetRole().Name ?
>> ...
>
> Where can I find this "maybe" monad implementation?
In the Haskell prelude? :P
There was a blog post about monads in D I can no longer find. Other than that the only other one I know of is the gist I posted.
Atila
|
Copyright © 1999-2021 by the D Language Foundation