[nem-pl] Varianty, a ToString

Michal Moskal malekith at pld-linux.org
Sun May 9 22:07:02 CEST 2004


On Sun, May 09, 2004 at 10:03:57PM +0200, rzyjontko wrote:
> Michal Moskal wrote:
> >
> > > Rozumiem, że kompilator nemerle ma być jedynym programem w nemerle?
> > 
> > To przykład standardowej (a może nawet ponadstandardowej) gęstości
> > użycia.
> 
> Standardowej gęstości użyca Appenda, czy standardowej gęstości użycia
> nemerle?

Appenda. Nemerle to chyba 1:2^20 a nie 1:2^10 ;)

> > BTW: można już definiować składniki w wariantach, jeśli (x:'a) to
> > x.ToString() również działa.
> 
> Czy to oznacza, że można już dodawać metody do variantów?  Jeśli tak,
> to jak?
> 
> Bo x.ToString () działa dla każdego typu, który się przerzutuje na
> Object.  Dla wariantów wyświetla nazwę konstruktora.


namespace Nemerle.Core {
                                                                                                               
  public variant list <'a>
  {
    | Cons { hd : 'a; tl : list <'a>; }
    | Nil {}
                                                                                                               
    public override ToString () : string
    {
      def sb = System.Text.StringBuilder ("[");
      def loop (lst) {
        | [x] =>
          sb.Append (x.ToString ()).Append ("]").ToString ()
        | x :: xs =>
          ignore (sb.Append (x.ToString ()).Append (", "));
          loop (xs)
        | [] => "[]"
      };
      loop (this)
    }
  }
}

to z lib/list.n w svn.

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?




More information about the devel-pl mailing list