[erlang-questions] suggestion: shorthand functions

Thomas Lindgren thomasl_erlang@REDACTED
Fri Jan 11 10:34:20 CET 2013


Another approach to reduce verbosity might be to implement a "DSL" of sorts, a la

%% obviously incomplete, but you get the idea
expand({d, D}) -> filename:dirname(D);
expand(Ds) when list(Ds) -> filename:join([ expand(D) || D <- Ds ]);
expand(F) -> F.

My main gripe with the "expand/1" approach above would be that the resulting caller might look a bit messy. But some experimentation could get the interface right.

(Compiling this into direct calls with a parse transform is left as an exercise.)

Best,
Thomas


----- Original Message -----
> From: Ulf Wiger <ulf@REDACTED>
> To: erlang-questions Questions <erlang-questions@REDACTED>
> Cc: 
> Sent: Friday, January 11, 2013 10:12 AM
> Subject: [erlang-questions] suggestion: shorthand functions
> 
> Since I've been writing a bunch of rebar.config.script code lately,
> I've suffered the agony of trying to write concise and readable 
> code without having to do tons of copy-paste, weird unwrapping
> funs etc.
> 
> What I think would make this sort of thing easier, and also 
> escript programming in general, is if OTP could provide some
> modules with concise naming and let-it-fail semantics.
> 
> Just off the top of my head, I scribbled down a few functions that
> I think would make *my* life easier. I pushed them to github to
> get some discussion going.
> 
> http://github.com/uwiger/shorthand
> 
> The modules are:
> 
> f.erl - shorthand functions for file.erl
> fn.erl - ditto for filename.erl
> e.erl - ditto for erl_eval.erl
> 
> The least beneficial is perhaps filename:erl, but my fingers and
> eyes ache from all the filename:join(filename:dirname(F), …)
> code.
> 
> Otherwise, I think the biggest benefit is to stick to let-it-crash
> programming, which I find is usually the default when I write
> scripts. The original functions are always available if you want
> to take a closer look at return values.
> 
> (For the file:script() counterparts, I also always pass the name
> of the script as a binding).
> 
> Comments?
> 
> BR,
> Ulf W
> 
> Ulf Wiger, Co-founder & Developer Advocate, Feuerlabs Inc.
> http://feuerlabs.com
> 
> 
> 
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
> 



More information about the erlang-questions mailing list