Projects list

Featured

Here are the list of my projects featured in this blog, with their status:

  • JSON-RPC client implementation in Haskell (started: repo is here)
  • RFC 707 implementation in Haskell (on hold)
  • ONC RPC client implementation in Haskell (not started)
  • AWT implementation in curses, using caciocavallo (not started)
  • Haskell compiler in Haskell (not started)
  • file(1) implementation using shared-mime-info as it’s source of information (started: see here) That project’s in Perl.

For the time being, all my projects are on hold or not even started due to my studies…I will however talk about my RFC 707 implementation project, given it already started.

N.B. : I may do some of these projects also in other languages (e.g. Perl) if the fancy takes me

Melbourne la merveilleuse: Open d’Australie

Bienvenue dans le second post d’une série consacrée aux événements se déroulant au moins partiellement à Melbourne, capitale sportive et culturelle du pays. Continuons avec ce qui est probablement l’événement sportif le plus connu se déroulant à Melbourne, du tennis! Logo Open d'Australie

Généralités

L’Open d’Australie est le plus récent des tournois du Grand Chelem (crée en 1905) et également celui dont l’histoire est la plus mouvementée. En effet, il fut souvent boudé par les meilleurs joueurs mondiaux jusque dans les années 80 en raison de son éloignement (surtout dans la première moitié du XXème siècle lorsque l’aviation n’en était encore qu’à ses débuts), des faibles prix offerts comparés aux autres tournois du Grand Chelem, de son organisation tournant entre les divers États australiens jusque dans les années 70 — car si Sydney ou Melbourne sont accessibles relativement aisément pas trop longtemps après les débuts de l’aviation, cela n’aide guère si le tournoi se tient à Adélaïde ou Perth — et de sa date (de la mi à la fin décembre jusqu’au milieu des années 80). En revanche le tournoi est considéré comme un tournoi du Grand Chelem à part entière depuis le milieu des années 80. Il s’agit, à l’image de l’US Open, d’un tournoi sur dur mais avec une surface plus lente que celui-ci et de très reconnaissables courts de couleur bleue. Il est d’ailleurs intéressant de noter que les deux tournois du Grand Chelem sur dur étaient originellement tous deux sur gazon.

Melbourne Park

Vue aérienne du complexe de Melbourne Park
Le complexe de Melbourne Park fut érigé à la fin des années 80 pour héberger l’Open d’Australie. En effet, suite à la sédentarisation de l’Open d’Australie à Melbourne au milieu des années 70, le tournoi avait lieu au Kooyong Stadium, mais suite aux pressions de l’ITF, le complexe de Melbourne Park fut construit non loin du centre-ville, entre le MCG et l’Olympic Park. Parlons maintenant des courts, en commençant par les courts extérieurs.

Show courts & courts extérieurs

Show court n°2
Une vingtaine de courts extérieurs sont répartis dans tous le complexe. Contrairement aux 3 courts principaux, ils n’ont pas de toits et tendent à n’héberger que les tournois de jeunes et pour handicapés à partir des quarts de finale. Par contre, ils voient beaucoup d’activité lors des premiers jours du tournoi et sont le lieu principal des qualifications se déroulant la semaine précédant le tournoi et l’accès desquelles est gratuit.

Melbourne Park Multi-Purpose Venue

Hisense Arena
Le seul des courts de Melbourne Park à être connu également, si pas principalement, par son nom sponsorisé de Hisense Arena, ce court à toit rétractable est plutôt isolé du reste du complexe. Il dispose également d’une piste de cyclisme en salle — couverte par les gradins lorsque l’arène est en configuration court — et héberge les match à domicile des équipes de basketball — Melbourne United — et de netball — Melbourne Vixens — de la ville.

Margaret Court Arena

MCA
Le troisième en capacité des courts de Melbourne Park, ce court à toit rétractable a subi d’importants travaux peu avant l’Open d’Australie 2015 et est nommé en l’honneur de l’ancienne joueuse de tennis australienne Margaret Court. Il s’agit d’ailleurs de l’ancien Show Court n°1, ce pourquoi il n’y a actuellement pas de court n°1. Adjacent à la Rod Laver Arena, il hébergera à partir de la saison à venir tous les matchs à domicile des Melbourne Vixens et une partie de ceux de Melbourne United.

Rod Laver Arena

Rod Laver Arena
Le court principal de Melbourne Park, anciennement appelé simplement le Central Court, il a été renommé en l’honneur de l’ancien joueur australien Rod Laver. Il héberge notamment les finales des événements principaux de l’Open d’Australie, divers concerts tout au long de l’année et est l’ancienne demeure des clubs de basket-ball de la ville.

Melbourne la merveilleuse: Coupe d’Asie des nations de football

Bienvenue dans le premier post d’une série consacrée aux événements se déroulant au moins partiellement à Melbourne, capitale sportive et culturelle du pays. Commençons avec une compétition du sport-roi, le football! Logo de la Coupe d'asie des nations 2015

Généralités

L’Asian Cup est la deuxième plus ancienne compétition continentale, après la Copa América, avec sa première édition en 1956 à Hong Kong. Oui, pour les chauvins qui me suivent chez eux, ça veut dire que la compétition asiatique a séniorité sur l’européenne. Et on peut même pas dire que notre tournoi ait séniorité sur celui des Africains: la première CAN était en 1957 au Soudan, le premier Euro en 1960 en France. Elle est organisée tous les quatre ans sous l’égide de l’AFC, originellement la même année que les Jeux Olympiques d’été, elle a été décalée à l’année suivant la Coupe du monde de football à partir de l’édition 2007 (qui devait originellement se tenir en 2008). L’édition qui nous intéresse aujourd’hui est l’édition 2015, organisée par l’Australie. Ce sera d’ailleurs leur troisième Asian Cup depuis leur transfert de l’OFC à l’AFC. Pour cette édition il y avait 3 qualifiés d’office — Australie (hôte et second de l’édition 2011), Corée du Sud (troisième de l’édition 2011) et Japon (tenant du titre) —, 2 qualifiés via les AFC Challenge Cup — Corée du Nord (2012) et Palestine (2014) — et 11 qualifiés par la phase de qualifications. La compétition se déroule du 9 au 31 janvier avec match d’ouverture à Melbourne au Melbourne Rectangular Stadium (Australie-Koweït, victoire des Socceroos 4-1) et finale à Sydney au Stadium Australia.

Melbourne dans l’Asian Cup

Tente de l'Asian Cup à Melbourne
Melbourne héberge, outre le match et la cérémonie d’ouverture, cinq autres matchs de phase de poules, un quart de finale et les camps de base de trois équipes: l’Australie, la Jordanie et l’Ouzbékistan. Melbourne est aussi un des deux sites pour lesquels des tickets Club Asia, c’est-à-dire des ensembles tickets premium + repas + bar sont disponibles, l’autre site étant Sydney.

Melbourne Rectangular Stadium

Melbourne Rectangular Stadium vu de l'extèrieur
Le Melbourne Rectangular Stadium — également appelé AAMI Park pour des raisons de sponsoring — est le stade de football et rugby de la ville construit histoire d'avoir un stade rectangulaire en ville en complément de l'Olympic Park, un stade d’athlétisme. Situé dans le quartier des installations sportives de la ville au sud de Federation Square, il héberge entre autres l’équipe de Super Rugby de la ville — Melbourne Rebels —, celle de rugby à XI — Melbourne Storm — et les deux clubs de A-League — Melbourne City et Melbourne Victory.
Pour cette coupe d’Asie il a hébergé les matchs joués à Melbourne dont un quart de finale plutôt tendu où les Coréens du Sud n’ont battu les Ouzbeks que dans le temps additionnel.

Voyage à Melbourne: CBD sud & Docklands

Bienvenue dans la seconde partie de cette série de posts sur Melbourne! Je continuerai ma visite avec le sud du CBD, Docklands…et la correction des oublis du post précédent ^^;.
Blason de la ville de Melbourne

Correction des oublis du post précédent

Déjà, une erreur alakon que j’aurais pu éviter car je le savais: il y a 5 gares principales à Melbourne. La cinquième est Flagstaff Station, à l’est de La Trobe Street. Encore une gare souterraine, qui a charge des trains vers le nord-est.
Vue “extèrieure” de Flagstaff Station
Ensuite, trois trucs que j’ai noté mais oublié de dire. Le premier est que le CBD n’est pas si grand en fait. Mais il est par contre particulièrement dense. Le second est que beaucoup de rues Est-Ouest ont des rues secondaires associées sises juste au Nord qui soit s’appellent Little <nom de la rue> (eg. Little Bourke Street ou Little Collins Street) soit <nom de la rue> Lane (eg. Flinders Lane). Enfin, il y a des petites pastilles dorées comme ci-dessous sur le Golden Mile Trail, un itinéraire permettant de visiter des lieux historiques de Melbourne.
Marqueur du Golden Mile Trail

CBD sud

Continuons notre tour du CBD en descendant Swanston. Premier arrêt: la mairie.

Town Hall

Town Hall à Noël
Le Town Hall héberge la municipalité de Melbourne, qui se bat souvent avec l’État de Victoria pour les compétences, il faut bien le dire. Il est ouvert lors des sessions du conseil municipal, mais ce sera pour Février!

Federation Square

Federation Square vu du ciel
En continuant de descendre Swanston jusque la rivière Yarra, on finit sur Federation Square, la place événementielle de Melbourne.

Sise en face de la cathédrale anglicane St Paul, cette esplanade remplie de buildings donne sur Federation Wharf — pour descendre vers les stades de tennis et cricket —, un pont sur la rivière Yarra pour passer vers Southbank et la gare de Flinders Street. Mais parlons un peu de l’esplanade elle-même. Elle dispose de nombreuses zones d’ombre, de chaises diverses et variées en libre services, d’écrans géants, de restaurants avec terrasse…l’un dans l’autre, un bon endroit où voir des évènements quand on ne peut avoir un billet.

Un autre truc intéressant sur Federation Square sont les Federation Bells: un ensemble de cloches en harmonie pour lesquelles n’importe qui peut composer de la musique. Et ça se passe par .

Flinders Street Station

Gare de Flinders Street
La gare de Flinders Street fait plutôt les trains vers le sud. Et un mot sur cette gare — et sur le CBD en général — des fois, comme c’est le cas pour ce très beau bâtiment, Melbourne me rappelle Paris avec ces bâtiments anciens parfaitement entretenus. Et des fois, comme c’est le cas avec le cinéma juste à côté…ben c’est plus Nice: des bâtiments anciens certes toujours en état mais qui marquent vraiment leur âge.
Forum Theatre

Collins Street

Collins Street vu de Swanston
Et voilà la rue emblématique de Melbourne la merveilleuse: Collins Street! Rue des finances, des commerces et des institutions (et oui, Treasury Place est au bout et Town Hall est à l’intersection avec Swanston)! Connue entre autres pour ses bâtiments de l’époque victorienne,
Bâtiments victoriens sur Collins Street
c’est là qu’est sise la banque dont je dépend ;P
Agence HSBC de Collins Street

Southern Cross Station

Southern Cross Station
En continuant sur Collins Street vers l’est on tombe sur la gare de Southern Cross, la plus récente des gares de Melbourne qui s’occupe plutôt des trains vers l’est. C’est également l’arrivée du service de bus pour l’aéroport de Melbourne Tullamarine, les Skybus.
Skybus

Docklands

Docklands est le quartier du port historique de Melbourne, quartier en pleine restructuration suite aux modifications des industries du transport.

Etihad Stadium

Etihad Stadium
Juste derrière Southern Cross se trouve l’Etihad Stadium, le stade servant de siège à l’AFL. Faudra probablement que j’aille y voir un match, mais là on est hors-saison :D

Harbour Town

Harbour Town
En descendant Docklands Drive, on tombe sur Harbour Town, un ensemble de magasins et restaurants dans Docklands. On y trouve toutes sortes de magasins, un dépôt de gros et des patinoires.
Patinoire permanente de Melbourne
Mais hors invitation avant, je visiterai cet hiver ;p

Melbourne Star

Melbourne Star
Juste à côté d’Harbour Town se trouve la Melbourne Star, une grande roue géante (circa 40 étages de haut) servant de poste d’observation payant permanent. J’espère avoir mon permis australien sous peu, comme ça je pourrais me prendre le pass annuel :)

N°2 Goods Shed

N°2 Goods Shed
En remontant Collins Street vers Southern Cross on tombe sur un viaduc. Dessous se trouve le N°2 Goods Shed, un ancien entrepôt de fret du port et du réseau ferroviaire victorien qui a depuis été réutilisé comme immeubles de bureau.

Voyage à Melbourne: CBD nord & Fitzroy

Bienvenue dans la première partie de cette série de posts sur Melbourne! Je vais vous parler de quelques impressions générales sur la ville et ensuite je commencerai la description par quartiers de ma visite.
Blason de la ville de Melbourne

Généralités

D’abord, une note importante: ces impressions générales ne prennent en compte que les quartiers où je suis allé, c’est à dire CBD, Fitzroy et Docklands.
Déjà, la ville est sillonnée de lignes de tram, c’est un truc de fou. Ça m’a franchement rappelé Milan avec le détail appréciable que dans une zone centrale — CBD et une partie de Docklands — tout trajet en tram est gratuit. Si tu sors de cette zone, il te faut payer. Pour payer son trajet — ou pour prendre bus et trains dans l’État — un seul moyen: la carte myki. Une carte probablement NFC achetable et rechargeable franchement n’importe où. Donc pour les nostalgiques, oui les habitants de Melbourne n’ont plus de tickets papier.
Ensuite, les feux. Melbourne a un système d’annonces sonores — plus exactement de code sonore — supplémentant le sémaphore pour annoncer aux piétons s’ils peuvent traverser. Mais les bips de leur système sont beaucoup moins irritants que l’alarme du système antibois.
Quelque chose à noter est que dès qu’on sort du CBD et de Docklands la ville est plutôt verte, avec des jardins un peu partout. De plus, j’ai pas vu un kiosque être utilisé comme tel. J’y ai vu des crêpes, des produits de beauté, des fleurs, des sacs, des CDs, de la quincaillerie mais pas de journaux.
Enfin, le climat…un seul mot: variable. Tu peux être en short un matin et sortir le pull et le pantalon long dans l’après-midi.
Habitant pour l’heure à Fitzroy, au nord-est du CBD, je vais commencer par ce quartier et par la moitié nord du CBD.

CBD nord

Comme souvent dans les villes australiennes, le quartier d’affaires — CBD en anglais — sert de centre-ville. Celui de Melbourne est de forme à peu près rectangulaire — avec La Trobe Street au nord, Flinders Street au sud, Spring Street à l’est et Spencer Street à l’ouest — avec deux excroissances: Federation Square au sud-est et Queen Victoria Market au nord-ouest. Ce quartier est entouré hors les deux excroissances par la ligne 35 du tram, la City Circle line et ses trams pittoresques. Je vais commencer ma description du CBD par une moitié nord descendant jusque Bourke Street.
Avant de rentrer dans les détails, une note pour les joueurs d’Ingress: le CBD est plutôt…disputé comme quartier. J’ai rarement vu simultanément une telle densité de portails et une telle difficulté à avoir des champs d’une quelconque étendue.
Ingress dans Melbourne, champ de bataille
Commençons par La Trobe Street et par une des quatre gares de Melbourne, Melbourne Central.

Melbourne Central

Vue extèrieure de Melbourne Central
La gare de Melbourne Central s’occupe plutôt des trains partant vers le nord, mais ce n’est pas trop grave si vous devez aller ailleurs vu qu’à Melbourne ils ont eu l’excellente idée de faire une ligne circulaire reliant les 4 gares.
Logo de Melbourne Central
Au-dessus de la gare se trouve le centre commercial de Melbourne Central avec ses nombreuses boutiques de bouffe sur le pouce et ses points à voir tels que l’horloge
Marionette Clock de Melbourne Central
ou la Shot Tower (En fait, à l’emplacement de la gare se trouvait également une usine de plombs, d’où la Shot Tower pour les faire). Quant au musée se trouvant dans la Shot Tower, ce sera pour un autre post.
Shot Tower sous son dôme de verre

State Library of Victoria

Logo de la State Library
À l’intersection de Swanston et La Trobe se trouve la bibliothèque de l’État de Victoria, un lieu d’études qui a eu la très bonne idée de fournir un Wi-Fi gratuit en ses murs.
State Library of Victoria, vue de Swanson Street
Il s’y trouve également diverses expositions (pour un autre post) et elle a la particularité que certaines de ses extensions ont été faites en conservant aux anciens murs extérieurs leur aspect de murs extérieurs, comme ci-dessous
Intérieur de la State Library
Elle est actuellement en travaux donc la photo de la façade n’est pas actuelle mais on peut remarquer que sur le parvis se trouvent des échiquiers géants
Échiquier sur le parvis de la State Library
et trois grandes statues. Deux assez classiques pour un tel bâtiment: une statue d’un ancien juge de la Cour suprême de l’État de Victoria
Statue de Sir Redmond Barry
et une de St-Georges terrassant le dragon.
Statue de St-Georges terrassant le dragon
Et une beaucoup moins banale: une statue de Jeanne d’Arc!
Statue équestre de Jeanne d'Arc

Queen Victoria Market

Queen Victoria Market
En continuant vers l’ouest sur La Trobe Street puis en remontant vers le nord sur Elizabeth Street, on tombe sur le Queen Victoria Market: un immense marché ouvert en plein cœur de Melbourne. Le mercredi s’y tient un très sympa marché nocturne avec des pubs, des stands de bouffe et tout ce qu’il faut pour passer une bonne petite soirée.

Chinatown

En retournant sur Swanston Street pour descendre la rue commerciale du CBD, on tombe une fois arrivé à Little Bourke Street sur Chinatown.
Chinatown, par l'ouest
Cette zone continue jusque l’intersection avec Exhibition Street, et avec ses portiques marquant franchement l’entrée et l’impression d’être dans un autre monde dès qu’on entre en son sein, ça m’a beaucoup rappelé Port-Louis.

Bourke Street Mall & The Emporium

La partie de Bourke Street entre Swanston et Elizabeth sert un peu d’annexe à la grande rue commerçante qu’est Swanston. Un point à noter tout de même: les boutiques de téléphonie sont surtout là-bas.

D’ailleurs, en parlant d’annexe, toute grande rue commerçante digne de ce nom se doit d’avoir ses grands magasins. À Melbourne, c’est The Emporium, relié par une passerelle aérienne à Melbourne Central et à des boutiques de designers de l’autre côté de Lonsdale Street par une autre. D’ailleurs, on y trouve des distributeurs à bitcoins!
Distributeur à bitcoins!

Parliament Station

Vue “extèrieure” de Parliament Station
Pour finir — et arriver sur Fitzroy même si au sud — en continuant un peu sur Little Bourke Street jusqu’à arriver sur Spring Street, on tombe sur une autre des grandes gares de Melbourne, Parliament Station. Celle-ci par contre est exclusivement une gare ferroviaire est est d’assez loin la plus discrète de toutes puisqu’elle est entièrement souterraine!

Fitzroy

Le quartier de Fitzroy est globalement au nord-est du CBD est est délimité d’un côté par le jardin Carlton, de l’autre par le jardin de la Trésorerie. C’est d’ailleurs dans ce quartier que se trouve mon logis provisoire.
Home @ the mansion
Mais avant de continuer la visite, quelques généralités. Ce quartier est parsemé de cafés, galeries d’art, restaurants, pubs et j’en passe.
Café dans Fitzroy
Il a également une architecture très variée, allant de bâtiments du XIXème siècle tels que ceux-ci sur Fitzroy Street
Bâtiments sur Fitzroy Street
à des bâtiments plus modernes tels que ces bâtiments de l’hôpital St-Vincent
Bâtiment de l'hôpital St-Vincent

Parlement de Victoria

Blason du parlement de l'État de Victoria
Le bâtiment du parlement de Victoria est situé vers le sud de Fitzroy, légèrement au nord du jardin de la Trésorerie qui marque la limite sud du quartier.
Bâtiment du parlement de l'État de Victoria
Il est comme beaucoup de bâtiments d’assemblées ouvert lors des sessions législatives mais la prochaine commence en Février! La visite des lieux sera donc pour une autre fois.
Jardin du Parlement
Juste au nord se trouve le jardin du Parlement. Pas grand chose à en dire à part bravo au paysagiste pour un plutôt beau jardin dans un espace absolument rikiki.

Jardin de la Trésorerie

Au sud du parlement se trouve la place de la trésorerie avec les nouveaux
Trésorerie de l'État de Victoria
et anciens locaux de la Trésorerie de l’État de Victoria,
Ancienne Trésorerie de l'État de Victoria
ainsi que le Département de l’Éducation, dont la façade arbore un très beau blason royal.
Blason royal sur le State Department of Education
En continuant vers le sud, on tombe sur le jardin de la Trésorerie
Jardin de la Trésorerie
et sur le mémorial en mémoire de JFK.
Mausolée de JFK

Jardin Carlton

En remontant complètement au nord de Fitzroy, on arrive au jardin Carlton.
Jardin Carlton
Ce très calme jardin héberge en son sein le Royal Exhibition Building,
Royal Exhibition Building
siège de l’Exposition Universelle de Melbourne et du Parlement de l’État de Victoria quand le Parlement fédéral squattait leur building, de 1901 à 1927, ainsi que le musée de Melbourne.
Musée de Melbourne
Rendez-vous au prochain post de la série pour le sud du CBD et Docklands!

Miscellaneous announcements v2

First of all, I've to announce a new project (Like you don't have enough projects running…Hush you, they don't need to know that…) : an implementation of file(1) using as it's data source shared-mime-info, a freedestop spec for MIME information storage usually used by Linux’s DEs for getting the type of a file.
The goals are to avoid duplicating file type information between file(1) and the DE, for said implementation to conform to the relevant POSIX spec and for it to be able to act as a drop-in replacement for Ian Darwin's file.
That project's repo can be found here

Second, a long in the making project of mine is at long last launched: I've moved to Australia! I'm in Melbourne since the 13th of January.

Compiler project: Miscellaneous announcements

Compiler project’s information

First of all, I want to Shayan at Clean Typecheck for his GSoC on adding type-checking and name resolution capabilities to Haskell-Source with Extensions. That will greatly facilitate writing the front-end.

Second, I may very well implement versions of Haskell pre-dating Haskell 98. After all, I got my hands on the preceding versions’ standards (see here), so why not do a old-standards compliant compiler…if that’s feasible, of course.

Lastly, I have chosen the name of the compiler. It shall be named lhc for, at your choice: Loïc’s Haskell Compiler, Lambda Haskell Compiler, a reference to the Large Hadron Collider, Light Haskell Compiler, Le Haskell Compiler, Last Haskell Compiler. An alternative spelling is λhc.
P.S. : The two last names are courtesy of a good friend, homer. Go bug him there !
P.P.S. : You avoided, amongst other more or less sane ideas, the THC.
P.P.P.S. : I’ll try, amongst other insane ideas, to enforce the alternative spelling as a possibility to call the compiler.

Other information

Ok, I forgot to celebrate my first Hackage package (that was hs-json-rpc)…I’ll redeem myself by celebrating my first contributions to a wider project in which I am not one of the founders (No, my contributions to Genetic Invasion don’t count for that milestone). Let’s get that show on the road!

I said “contributions”, so first contribution: I contributed a patch to Evolving Objects because the library didn’t compile with Visual C++ when OpenMP was used. I had this patch in a private version of the library, used to compile Genetic Invasion for Windows, but given that this private branch served exclusively under Windows, I didn’t knew that a terrible error in my modifications nuked compilation under Linux…I cleaned up the patch and submitted it once I became aware of that error.

Second one, I made a library proposal for GHC (see here). Nothing big, but it was a good introduction to Haskell’s library proposal process.

Compiler project: Design, first phase

First target choice

I choose to have as first target .Net’s virtual machine because it is — at least theoretically — made to support various paradigms, it already has support for:

There also is a package on Hackage to write and manipulate code in .Net’s intermediate language. Ah, and it supports unsigned integral types unlike, for example, the JVM.

Type mappings

Haskell’s values will be mapped to Lazy<T> values with the exception of functions values who will be mapped to Func<T, TResult> values and tuples who will be mapped to Tuple<T> values. It should be noted that because of .Net’s Func<T, TResult> delegate implementation, it can’t represent functions of more than 16 variables, so the compiler should automatically curry functions of 16 variables or more when they are used as values. .Net’s tuples going only up to 8-tuples, the last element of a 8-tuple will be used to store a tuple containing the rest of the tuple, that is a one-tuple for 8-tuples, a pair for 9-tuples, a triple for 10-tuples, et cætera.

N.B. : The limitation to 16 variables for a function value will probably stay a limitation of the implementation, but to comply with Haskell 98, I must support tuples up to 15 elements.

Haskell’s numeric types will be mapped to .Net’s numeric types, e.g. Integer will be mapped to BigInteger. Arrays will be mapped to .Net’s arrays, or to a class backed by a .Net array. Character handling will most certainly be a tall order: I would like to have a string type backed by .Net’s native string type but it’s a UTF-16 encoded string type giving only access to enumerators on, length in and indexation of 16-bit entities. StringInfo is better in this aspect, but it gives access to the .Net concept of a text element, something akin to a grapheme.

I will have to find a mean to export type aliases, but I’ll probably implement newtypes as classes extending the base type and adding nothing to the base type, as well as modifying nothing I don’t need to.

Module mappings

Each Haskell module will be mapped to three things:

  • A namespace, for the scoping role of the module
  • An assembly or a netmodule, for the “hiding” role of the module
  • A set of classes (one for each datatype and most probably one for the functions) for the code

In its scoping role, a module named X.Y will correspond to a namespace named Haskell.X.Y. In its role to hide elements, it will probably correspond to an assembly.

Notes & musings

N.B. : The following paragraph contains open questions for the implementation. All suggestions are welcomed.

I’ll perhaps implement typeclasses with a map linking types with dictionaries, but I will need to decide one thing: do I enter only the type without the Lazy<T> wrapping, only the type with the Lazy<T> wrapping or both ? And if I enter both, should I just enter a generic function forcing the value and calling the version without the Lazy<T> wrapping ? Or, at least, should I just do that for user-defined types ? And if I do that, shouldn’t I offer a option (with a pragma perhaps) to do the inverse, i.e. consider that the default version is the one with the Lazy<T> wrapping and the dictionary I create for the strict type just wrap the value and call the version for the lazy type.

There is another delegate family, Action<T>, for functions that do not return a value. Should I use it for function returning () ? And should I use Func<TResult> for functions that only take a () as parameter ? Of course, this paragraph questions are for the case where a function is used as a function value, but they are nonetheless interesting.