Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Is there a technical reason that would prevent the compiler from honoring a per-file pragma that allowed the developer to define how the code was expected to be interpreted by the compiler?


Haskell's GHC is doing exactly that. You can even mix and match pragmas for different extensions.


I find it terribly confusing. It means that Haskell is almost never something I can expect a lot from, but a weird combination of extensions changing to "non-standard" behaviours.


> It means that Haskell is almost never something I can expect a lot from, but a weird combination of extensions changing to "non-standard" behaviours.

I can't think of a weird combination of behaviors from extensions that would change semantics... maybe it's because I don't use that many extensions usually.

When I do they are related to type level programming and all they seem to affect is type inference.


Never confused me. In general, on a bigger project you'll have a bunch of approved extensions, and everything extra goes through very strict code review to see whether it helps more than it confuses.


In a strictly controlled project, fine. But working with three different open source extensions that all use a different setup gets confusing quickly.

Point being the same: Haskell as used is never quite standard Haskell.


> Point being the same: Haskell as used is never quite standard Haskell.

In practice I haven't found this true.


A different setup?


An example would be helpful.


I know Perl has done the same for quite a while now.


there are ABI incompatibilities between the C++98/03 STL and the C++11 and C++14 STLs.


That's unfortunate. I'm not too familiar with the intricacies of C++, but I assume you can't link multiple STL libs in a single binary?

Edit: Added a "can't" that was accidentally omitted...


I don't know whether you can, but it would be asking for trouble. Let's say you call function f in library L and get back a std::list, and then pass it to function g in library M, which linked to a different implementation of std:list. At best, that would lead to a crash.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: