std.functional.compose compilation error

Chuck Allison chuck.allison at gmail.com
Thu Nov 9 04:58:19 UTC 2017


On Thursday, 25 August 2016 at 14:06:32 UTC, Antonio Corbi wrote:
> Hello,
>
> Trying to compile this example from Chuck Allison:
> -------------------------------------------
> import std.stdio;
> import std.functional;
>
> void main() {
>     auto div3 = (double x) => x/3.0;
>     auto sq = (double x) => x*x;
>     auto pls1 = (double x) => x+1.0;
>     alias compose!(div3,sq,pls1) comp;
>     writeln(comp(2.0)); // 3 == (2.0+1.0)^^2 / 3.0
>     alias pipe!(div3,sq,pls1) pip;
>     writeln(pip(2.0));  // 1.44444 == (2.0/3.0)^^2 + 1.0
> }
> --------------------------------------------
>
> I get this error (with DMD64 D Compiler v2.071.1 in linux):
>
> compose.d(8): Error: template instance compose!(div3, sq, pls1) 
> compose is not a template declaration, it is a module
>
> But the error disappears if I use this import:
>    import std.functional:compose,pipe;
>
> Is this a bug or is it the expected behaviour under the recent 
> 'import' changes?
> Thanks!

As others have said, rename the .d file, since files are 
considered modules. I have since changed my notes to reflect this 
change. Sorry for the confusion.

Chuck Allison



More information about the Digitalmars-d-learn mailing list