August 2006 Blog Posts

Un filmato e un blog veramente interessanti...

Posto anche come promemoria... L'ultimo filmato su Channel9 è l'intervista ad un personaggio veramente singolare: Brian Beckman.Altrettanto interessante è il suo blog.

posted @ Wednesday, August 30, 2006 6:22 PM | Feedback (0)

Ancora sugli Extension Method...

Ancora un esperimento con gli extension method... public static class Monad{   public static Converter<List<A>, List<T>> Map<A, T>(this Converter<A, T> mapper)   {      return list => list.ConvertAll<T>(mapper);   }} Map è un extension method che data in input una funzione del tipo A -> T (dove A è il tipo del parametro di input e T il tipo del valore di ritorno), ritorna una funzione del tipo List<A> -> List<T>. In sostanza restituisce una nuova funzione che effettua la medesima trasformazione anzichè su un elemento, su una intera lista di elementi. Un esempio di codice che usa il metodo potrebbe essere: List<string> list = new List<string>...

posted @ Wednesday, August 30, 2006 2:05 PM | Feedback (1)

Extension methods and dynamic properties

C# 3.0 introduce una interessante feature denominata extension method (vedi C# 3.0 Specification per maggiori dettagli) che in sostanza permette di "agganciare" metodi a qualunque tipo senza dover creare una classe derivata. Il tutto senza penalizzazioni in termini di performance visto che il lavoro è svolto a tempo di compilazione.Supponiamo ad es. di voler mettere a disposizione di ogni oggetto un metodo Serialize che effettua la serializzazione dello stesso utilizzando System.Xml.Serialization.XmlSerializer. Potremmo scrivere un extension method del tipo: using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Xml.Serialization; namespace System.Xml.Serialization{   public static class SerializationExtensions   {      public static void Serialize(this object obj, TextWriter writer)      {         XmlSerializer s =...

posted @ Wednesday, August 30, 2006 8:37 AM | Feedback (0)

Mono e C# 3.0

Una considerazione banale ma dagli interessanti risvolti... Visto che le feature di C# 3.0 (extension method, lambda expression, object and collection initializer, ...) sono frutto dell'intelligente lavoro del compilatore e non di una nuova versione del CLR (il codice gira sul CLR 2.0), è possibile sviluppare codice C# 3.0, compilarlo con il compilatore Microsoft ed eseguirlo con il runtime Mono... anche su Linux, Mac OS X, ...

posted @ Tuesday, August 22, 2006 6:15 PM | Feedback (0)

IronPython hosting

Stimolato da Lawrence (http://blogs.ugidotnet.org/lawrence/), nei ritagli di tempo (quali?!), mi sono messo a guardare un po' più seriamente Python e in particolare la sua (più nota) implementazione .Net: IronPython (http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython).Sto pensando a come rendere "scriptabile" una applicazione che ho scritto poco tempo fa. In particolare volevo dare un'occhio di riguardo a Python come linguaggio per scriptarla. Un esempio semplice di codice... : using System;using System.Collections.Generic;using System.Text;using System.IO;using IronPython.Hosting; class Program{   static void Main(string[] args)   {      string[] colors = { "Red", "Green", "Blue" };       PythonEngine engine = new PythonEngine();      engine.Globals.Add("colors", colors);       using (FileStream stream = new FileStream(@"E:\temp\Python.out.txt", FileMode.OpenOrCreate))      {         engine.SetStandardOutput(stream);         engine.Execute("print colors[1:]");      }   }} Interessanti...

posted @ Friday, August 4, 2006 2:22 PM | Feedback (0)