Re: BeerConf Mid-December Edition

2020-12-16 Thread Iain Buclaw via Digitalmars-d-announce

On Monday, 7 December 2020 at 08:35:35 UTC, Iain Buclaw wrote:

Happy Monday everyone,

This month, as the last weekend falls on Boxing Day, we'll be 
signing off the year a week earlier than usual.


So one more time for 2020, grab your best-loved beverages and 
revered D topics, and join us December 19-20th to celebrate all 
that we've collectively achieved this year, before finally 
banishing 2020 into history's dustbin (and sanitize it twice 
for good measure).


As always, a link will be posted to the stream on Saturday.



Hi all,

Just a friendly reminder that this is happening this weekend, see 
you all there!


Re: Truly algebraic Variant and Nullable

2020-12-16 Thread Oleg B via Digitalmars-d-announce

On Wednesday, 16 December 2020 at 15:58:21 UTC, 9il wrote:

On Wednesday, 16 December 2020 at 14:54:26 UTC, Oleg B wrote:

On Sunday, 15 November 2020 at 04:54:19 UTC, 9il wrote:
Truly algebraic Variant and Nullable with an 
order-independent list of types.


Nullable is defined as
```
alias Nullable(T...) = Variant!(typeof(null), T);
```

Variant and Nullable with zero types are allowed.

`void` type is supported.

Visitors are allowed to return different types.

Cyclic referencing between different variant types are 
supported.


More features and API:

http://mir-core.libmir.org/mir_algebraic.html

Cheers,
Ilya

The work has been sponsored by Kaleidic Associates and 
Symmetry Investments.


Great library! Have you any plan to separate it from mir-core 
(to mir-algebraic for example)?


Thanks! Maybe, but mir-core is quite small itself and 
mir.algebraic is the only part that would be extended or 
updated in the near future. Other parts are quite stable. If 
there would be a strong reason to split it, we can do it.


That are you planing update? It's will be perfect if you add 
`get` overload for kind type and more work with tags [2]


like that:
```
alias TUnion = Algebraic!(
TaggedType!(int, "count"),
TaggedType!(string, "str")
);

auto v = TUnion("hello");

S: final switch (v.kind)
{
  static foreach (i, k; EnumMembers!(k.Kind))
case k:
  someFunction(v.get!k); // [1] by now 
v.get!(TUnion.AllowedTypes[i])

  break S;
}

if (v.is_count) // [2]
writeln(v.count);
```

or may be I miss this feature in docs?



Re: Truly algebraic Variant and Nullable

2020-12-16 Thread jmh530 via Digitalmars-d-announce

On Wednesday, 16 December 2020 at 15:58:21 UTC, 9il wrote:

[snip]

Thanks! Maybe, but mir-core is quite small itself and 
mir.algebraic is the only part that would be extended or 
updated in the near future. Other parts are quite stable. If 
there would be a strong reason to split it, we can do it.


What about making it into a sub-package, as in here [1]?

[1] 
https://github.com/atilaneves/unit-threaded/tree/master/subpackages


Re: Truly algebraic Variant and Nullable

2020-12-16 Thread 9il via Digitalmars-d-announce

On Wednesday, 16 December 2020 at 14:54:26 UTC, Oleg B wrote:

On Sunday, 15 November 2020 at 04:54:19 UTC, 9il wrote:
Truly algebraic Variant and Nullable with an order-independent 
list of types.


Nullable is defined as
```
alias Nullable(T...) = Variant!(typeof(null), T);
```

Variant and Nullable with zero types are allowed.

`void` type is supported.

Visitors are allowed to return different types.

Cyclic referencing between different variant types are 
supported.


More features and API:

http://mir-core.libmir.org/mir_algebraic.html

Cheers,
Ilya

The work has been sponsored by Kaleidic Associates and 
Symmetry Investments.


Great library! Have you any plan to separate it from mir-core 
(to mir-algebraic for example)?


Thanks! Maybe, but mir-core is quite small itself and 
mir.algebraic is the only part that would be extended or updated 
in the near future. Other parts are quite stable. If there would 
be a strong reason to split it, we can do it.


Re: Truly algebraic Variant and Nullable

2020-12-16 Thread Oleg B via Digitalmars-d-announce

On Sunday, 15 November 2020 at 04:54:19 UTC, 9il wrote:
Truly algebraic Variant and Nullable with an order-independent 
list of types.


Nullable is defined as
```
alias Nullable(T...) = Variant!(typeof(null), T);
```

Variant and Nullable with zero types are allowed.

`void` type is supported.

Visitors are allowed to return different types.

Cyclic referencing between different variant types are 
supported.


More features and API:

http://mir-core.libmir.org/mir_algebraic.html

Cheers,
Ilya

The work has been sponsored by Kaleidic Associates and Symmetry 
Investments.


Great library! Have you any plan to separate it from mir-core (to 
mir-algebraic for example)?