in reply to Re^2: 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)

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

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

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

    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!

        and it has a lot of redundant code, mainly the objects and arrows on the LHS.

        That'snotredundant.Spacersarecrucialandcan'tbeomitted.

        Both your CGI::HTML::Functions and Rex examples have more parent-language symbols that the two examples I gave

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

        wut. It's literally the same as a directory path, with the addition of subqueries ([...]) and simple comparison (...=...). I don't know of a simpler, more readable language.