Specify a namespace and its contents to make available to this module.


use <namespace>
use <namespace> from <library-name>

When using the first form if the compiler cannot immediately locate the namespace
(i.e if its not in the list of default loaded libraries)
it will look for a (platform dependent) library-name of the same form as the namespace.

For .Net thats the namespace with '.dll' appended

use Foo.Bar 
# On .Net will look for namespace in Foo.Bar.dll if not already available

If the filename of the library differs from the namespace, you can specify it with the second form.
<library-name> can be a simple identifier, qualified identifier (Foo.Bar) or a string literal.

use Foo.Bar from SomeLib

You can put single or double quotes around the file name if its components are not legal identifiers.
(for example, the filename has a space or punctuation mark in it).

use Foo.Bar from "My Lib"


On .Net <library-name> will refer to a .Net Assembly or dll.

No ".dll" extension is expected (or allowed) in any of this syntax.

In .Net the list of default loaded libraries is:

  • System
  • System.Collections.Generic
  • System.IO
  • System.Text
  • Cobra.Core


use System.Windows.Forms 
use System.Drawing


In most cases this syntax means you dont need to specify the commandline -reference switch as the dll can be found through the common naming of the use target and the dll.

With MyProg.cobra containing ...

    use Foo.Bar

Instead of compilation by

cobra -reference:Foo.Bar MyProg.cobra

you can just say:

cobra MyProg.cobra