I have no idea what that means.

Algebraic Data types are mostly from functional languages. In spirit they are similar to C unions, but in practice they are very different. They are also type-safe meaning they fit into the theoretical end of the type system whereas in C the "type" is really more a way of telling the compiler how much space to allocate. If you have ever played with Haskell or OCaml you have likely encountered them, but they are most definitely not the same thing as a union (C style or Moose style).

Filed as CPAN RT#58411

Yes, thank you very much, we have been discussing the best way to solve this.

The problem has nothing to do with undef.

You are correct, it is the Semi-Predicate problem, which we clearly stepped into with this implementation.

Undef is only a problem if you think it's ok for you and only you to use undef despite a long and continuing history of usefully using undef in Perl.

Right, thats my problem though. That long and continuing history of use is inconsistent and at times contradictory. Just think of all the possible permutations of return;,  return undef; and  return (); and what each of them means in scalar and list context. Now there be dragons.

-stvn

In reply to Re^5: Moose type question by stvn
in thread Moose type question by Sue D. Nymme

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.