MUST HAS requires that a library be included, and generates an error if not has. CAN HAS, for comparison, merely requests inclusion of a library, and generates a non-fatal warning if the library cannot be found.
HAI
MUST HAS STDIO
VISIBLE "OMG HAI!"
KTHXBYE
----
I would say that CAN HAS should generate a fatal warning... Or, we could punctuate CAN HAS to indicate the requirement...
Optional:
CAN HAS STDIO?
Not optional:
CAN HAS STDIO
--- //Kyle, 2007/05/29 04:19//
----
I agree with Kyle: we don't need to have an exploding number of keywords, and we already have punctuation for inflection (''IZ CATURDAY!'' vs ''IZ ... ?'')
--- //Adam, 2007/05/29 10:38//
----
I think any failure to properly load an included library/module/header/etc should be a fatal error.
--- //ILikePi, 2007/05/29 15:33//
----
agreed .. either you need this file/library to be included, or you don't. i can't think of any reason you would need it to be optional.
--- //xrestassuredx//
----
I can. Delay-loading. Let's say I develop the latest and greatest LOLCODE Kitten Generator. I want people to browse to my web page, http://pointyredhats.littletinygardengnomes.net/kittehs.lol, and make their own lolcat. Assume client-side support for LOLCODE (as a language only) across all browsers. Now, the vast majority of my users will be using Firefox or Konqueror or Safari or IE or Opera or Minefield or Minimo or IE Mobile or Pocket Opera or Safari for iPhone or... All of which can display pretty pr0n and stuff. However, I know some people, whether by choice or by force, will still be using Lynx, which is a text-mode-only browser (and which doesn't support Java or JavaScript but let's let that go for the moment). If the user does not have graphics support, I want to be able to fall back to text.
In .NET, barring the use of Assembly.Load and other reflection, code that references unavailable libraries will fail as soon as it's loaded. In Java, again barring the use of new Class() and other reflection, code that references unavailable classfiles will fail at some indeterminate time before the reference is used; in my experience with HotSpot, it's usually when the class initializer (i.e. static constructor) in a class that directly references the missing code runs. In C and C++, however, even barring the use of LoadLibrary and GetProcAddress, one can tell the linker to put the trampoline in the delay-load import table. If the branch of code does not call that imported function, //no error occurs//.
Therefore, getting back to my Kitten Generator example:
HAI
CAN HAS libpr0n?
YA RLY:
BTW output a picture of a kitten with some contextual
BTW text, misspelled and otherwise construed as to be
BTW from a lo--TL;DR
NO WAI: CAN HAS STDIO
BTW if can't has STDIO, then automatic implied GTFO/SUPRISE BUTTSECHS!
BTW output a random selection from:
BTW "Bukkits: Teh Tail of Loss n Dispair" by Harbl Z. Lolrus
BTW "LOLCODE for Kittehs" by O'Really Press
BTW "Has a Flavr, Has Not Flavr" by the Lolhamsters
KTHXBAI
KTHXBAI
--- //TwelveBaud, 2007/06/06 01:49//