in reply to (tye)Re4: regexp searches over array slices
in thread regexp searches over array slices

Good point.

That probably means that you need to use an explicit superposition to get the effect you want:

if (any(@var ^=~ /baz/)) {...}

or:

if (any(@var) =~ /baz/) {...}

(Though I will hint darkly at other possibilities that the Perl 6 design team are tossing about -- such as unification of hyperoperators and superpositions!)

Replies are listed 'Best First'.
(tye)Re5: regexp searches over array slices
by tye (Sage) on Nov 15, 2001 at 01:40 UTC

    Ah, then would evaluating a(n uncollapsed) superposition in a Boolean context generate a warning/error or would it cause both branches of the code to be (tentatively) run and the results to be indeterminate until something is done to collapse the (expanding) superposition? ;)

    This could add "logic programming" to Perl's bag of paradigms.

            - tye (but my friends call me "Tye")
      ...would evaluating a(n uncollapsed) superposition in a Boolean context generate a warning/error or would it cause both branches of the code to be (tentatively) run and the results to be indeterminate until something is done to collapse the (expanding) superposition? ;)

      Err...neither.

      In a boolean context, a disjunctive superposition evaluates to true if any of its eigenstates is true, whilst a conjunctive superposition evaluates to true only if all of its eigenstates are true.

      This could add "logic programming" to Perl's bag of paradigms.

      Sssssssssshhhhhhhhhhhh!!!!!!! How the heck am I supposed to sneak these new paradigms in if you keep warning everybody beforehand??? ;-)

      But, yes, that's the general idea. It would be rather nice to be able to code an n-ary max subroutine declaratively, like so:

      sub max (*@values) { any @values >= all @values }
      Especially since that version is vastly more amenable to internal parallelization.
        Don't you have those two backwards?
        sub max (*@v) { any(@v) >= all(@v) }
        That sounds more logical to me -- it returns any element of @v such that it is greater than or equal to all elements of @v.

        _____________________________________________________
        Jeff[japhy]Pinyan: Perl, regex, and perl hacker.
        s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;