in reply to Re: Which internal DSL are there in Perl? (Domain Specific Languages - Part 1)
in thread Which internal DSL are there in Perl? (Domain Specific Languages - Part 1)

Which of them are internal DSLs?

I have the impression most except CGI::HTML::Functions (which I already mentioned)

Find::File::Rule seems to be a nice example for an OO interface, which comes close thru cascading.

Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!

  • Comment on Re^2: Which internal DSL are there in Perl? (Domain Specific Languages - Part 1)

Replies are listed 'Best First'.
Re^3: Which internal DSL are there in Perl? (Domain Specific Languages - Part 1)
by ikegami (Patriarch) on Aug 04, 2017 at 21:09 UTC

    ah, you just want internal DSLs. I just added File::Find::Rule (a query language parsed as Perl), then.

      There's also Path::Class.

      file("foo/bar.txt")->dir->parent->dir("baz")

      It's the internal DSL equivalent of the following XPath query:

      file('foo/bar.txt')->find('dir()/../baz')

      Unfortunately, Path::Class wasn't designed as DSL, so it doesn't have an equivalent of

      dir('.')->find('*[file()]')
        Time to quote chromatic :)

        The "Is It a DSL or an API?" Ten Question Checklist

        Not every API is a DSL.

        Otherwise every class allowing cascading method calls would be a DSL.

        It doesn't "read like a conversation" and it has a lot of redundant code, mainly the objects and arrows on the LHS.

        The find examples you've listed are very well designed and could easily be structured in a better readable way, being extended with a DSL frontend.

        here a very good discussion on it

        http://www.infoq.com/news/2007/06/dsl-or-not

        update

        I think I have to correct myself, since Path::Class tries to mimic XPath it should be qualified as DSL if XPath is a language.

        My main problem is that I don't consider XPath to be a particularly good readable.

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)
        Je suis Charlie!