in reply to Re: "Native Perlish"
in thread "Native Perlish"

According to the Webster's 1913 accessible frim KDE thanks to kdict, one of the meanings for idiom is the syntactical or structural form peculiar to any language.

I think that syntactical/structural forms are the way of capturing in syntax recurrent programmatic patterns so they stand out. So a language that captures patterns syntactically absent from other languages is certainly idiomatic. Perl is very aggressive in capturing patterns with its syntax so it is certainly idiomatic. A language can also be very idiomatic by its very repetitive syntax like Lisp and its "clipped nails". I would use the expression syntactically idiotic here to qualify Lisp.

-- stefp

Replies are listed 'Best First'.
Re: "Native Perlish"
by jonadab (Parson) on Mar 28, 2003 at 13:25 UTC

    idiom goes beyond syntactical or structural form. Here are two definitions from the OED (the second and third major ones; using the 1971 compact edition):

    • the specific character, property, or genius of any language; the manner of expression which is natural or peculiar to it.
    • a form of expression, grammatical construction, phrase, etc., peculiar to a language; a peculiarity of phraseology approved by the usage of a language, and often having a significance other than its grammatical or logical one

    The first definition there, applied to Perl, might be things like using $_ and @_ to write concisely (Effective Perl Programming item 7). The second definition would mean things like while (<FH>) { do_stuff } (although technically that is approved by the design, rather than the usage, of the language) or perhaps things like naming conventions. A non-Perl example would be Hungarian Notation in C++. The Perl community has things like that too.

    Stuff like the Schwartzian Transform could be considered idiomatic also, or the practice of returning undef for false (which, incidentally, will change in Perl6).

    for(unpack("C*",'GGGG?GGGG?O__\?WccW?{GCw?Wcc{?Wcc~?Wcc{?~cc' .'W?')){$j=$_-63;++$a;for$p(0..7){$h[$p][$a]=$j%2;$j/=2}}for$ p(0..7){for$a(1..45){$_=($h[$p-1][$a])?'#':' ';print}print$/}