Slashdot Mirror


Microsoft Releases A New Monad Command Shell Beta

Watercooler Warrior writes "Slashdot originally broke the news that a new Microsoft command shell was in the works when a reader noticed a suspicious job posting by Microsoft India. Today Microsoft released the first really usable version of the shell (codenamed Monad) to beta testers - and anyone who carefully reads the WinHEC slides about Monad will find how to join the beta and get a peek at it. The shell looks like a bunch of old-school Unix and Perl hackers were given free rein to do what they wanted with the .NET framework, and from what is known about the backgrounds of the Monad developers this is probably pretty close to the truth."

5 of 126 comments (clear)

  1. Re:Monad == ?? by Kumkwat · · Score: 5, Informative



    First thing I thought when I saw Monad was its definition from category theory. A Monad is a triple, containing a functor, and 2 natural homomorphisms.

    Less cryptic, is its use in Haskell as way of parameterizing computations. Specifically its used to produce the I/O Monad which is parameterized by some type A in the pair IO : a -> world -> (a, world).

    More in line with ur question, the word Monad comes from greek , and it means "one" "single " or "unique". So I guess they think this is a "unique" bit of work.

  2. Access for Monad Beta by Plake · · Score: 4, Informative

    Go to http://beta.microsoft.com, login with your passport account.

    The guest id is mshPDC.

    Go nuts. :)

  3. Re:It's about time by Anonymous Coward · · Score: 1, Informative

    title bar -> properties -> Quick edit mode.

    Select + Enter = copy
    Right Click = paste

  4. Re:It's not quite all that by Earlybird · · Score: 3, Informative
    • Yes, everything's dandy, until you happen to be using two programs that don't export and import data in compatible formats.
    You missed the part about the type system, then. Any program can access the data, because the data is packed in nice structured .NET types -- arrays, lists, instances, etc. You use reflection to inspect even types your program doesn't understand.

    For example, if something wants to sort objects on an attribute "name", it doesn't need to know the type of the input: it just asks for the value of the name properties. Obviously a sorter needs to know how to compare values against each other: it needs, in short, to be able to turn anything into a string. Those things are solved using formal interfaces: if your "name" attribute is not a string object, it needs to support an interface that allows it to be turned into a string on command (just like Python's __str__(), Java's toString(), etc.). With .NET's type system and automatic boxing/unboxing you already have a rich set of types to interact with.

    The challenge here is agreeing on a set of interfaces that make programs able to interact beyond the basic .NET primitives. For example, let's say the output of my program consists of image bitmaps. Something like a class with an (x, y) extent and a vector of RGB objects. All you need to share such objects is to specify the appropriate interface for clients to use. The client certainly doesn't need any of the originator program's code, just the interface.

    If you think about it, such interfaces already exist in daily usage in a different format: JPEG. GIF. PNG. They're standards need for interoperability. In the same way, programs need to standardize their exchange mechanisms, and if you're saying that the solution is for "everything to be just text" (or more precisely, octet streams) then you're just moving the problem somewhere else. Ultimate, at some point that text/those octets need to become something else.

    (By the way, I'm not a .NET developer.)

  5. Eh? by Estanislao+Mart�nez · · Score: 2, Informative
    Obviously a sorter needs to know how to compare values against each other: it needs, in short, to be able to turn anything into a string.

    I'm sorry, but those are not equivalent statements at all. In most (decent) languages, you implement a sort order simply by providing an arbitrary function (or class, or object, or closure, or whatever) that compares two objects. Hardly ever do you need to convert them to strings.

    Not to mention that even string sorting is done this way-- you don't sort strings in the same order in Spanish and English, for example.