On Wednesday, 10 December 2014 at 12:24:56 UTC, Tobias Pankrath wrote:
On Wednesday, 10 December 2014 at 10:24:53 UTC, Paulo Pinto wrote:
On Wednesday, 10 December 2014 at 08:43:49 UTC, Kagamin wrote:
On Tuesday, 9 December 2014 at 20:55:51 UTC, Dicebot wrote:
Because you don't really create a template that way but workaround broken function behavior. It is not the usage of empty templates that is bad but the fact that plain functions remain broken => not really a solution.

You can compile against phobos sources instead of interface files.

This cannot be the solution if D aspires to be used in contexts where binary libraries are used.

C++ is excused to have template code in headers given the primitive tooling, but languages like Ada and Modula-3 support proper information hiding for generic code.

--
Paulo

A binary blob requirement makes no sense for a standard library.

And yet that has been the way it always worked in the Mesa linage of languages.

Mesa, Modula-2, Modula-3, Ada, Oberon, Object Pascal  ....


Would you like to explain how the proper information hiding support works for generic code in Ada? I'm really curious how that could work in D.

The libraries contain the required metadata for symbol tables and code locations that need to be extracted into the executable/library.

Package definition files contain the minimum information the compiler needs to know to search for the remaining information.

Example,

-- Package header
generic
  type Element_T is private;
package functions is
  procedure Swap (X, Y : in out Element_T);
end functions;

-- Package body
package body functions is
  procedure Swap (X, Y : in out Element_T) is
  begin
    -- implementation
  end Swap;
end functions;

-- importing it
declare
  package functions_Int  is new functions (Int);
  use functions_Int;
  x, y : Int;
begin
  x := 1;
  y := 2;
  Swap(x, y);
end;


Lots of options are possible when the C compiler and linker model aren't being used.

..
Paulo

Reply via email to