[nem-pl] Re: [svn] nemerle/trunk: lib/tree.n ncc/Makefile ncc/testsuite/Makefile ncc/testsuite/match-literals-string-eq...

Michal Moskal malekith at pld-linux.org
Thu Jan 15 09:51:59 CET 2004


On Thu, Jan 15, 2004 at 03:01:35AM +0100, elfwarr wrote:
> +public interface IComparableTo ('a)
> +  {
> +    Compare (_ : 'a) : int;
> +  }
[...]
> +public class BalanceViolation extends System.Exception
> +	{
> +		public this(){}
> +	}
[...]
> +  public variant Color 
> +	{ 
> +	|	Red
> +	|	Black
> +	}
> +
> +  public variant Node ('a) where 'a :> IComparableTo ('a)
> +    {
> +      | Tr {
> +		key : 'a;
> +		color : Color;
> +		lchild : Node ('a);
> +		rchild : Node ('a); 
> +		}
> +      | Leaf
> +    }

Wcięcia! Co kawałek masz inne. Sugeruje dostować się do systemu wcinania
w stdlib, example:

class foo
{
  blah : bar;

  foo () : void
  {
    def x () {
      match (x) {
        | A => ()
	| B => 
	  sfdjhgkj.hgkfdh.fdkgjklfd ()
      }
    };
    if (cond)
      x ()
    else
      2 * x ()
  }
}

Dawid, Jacek -- proszę napiszcie w hacking.xml o stylu stdlib.
 
> +
> +   public 'a where 'a :> IComparableTo ('a) 
> +   Get (tree: Node('a), elem: 'a): option ('a)
> +	{
> +	  def _get(tree: Node('a), candidate : option ('a)):option ('a) 

Spacje dookoła operatorów, szczególnie ':' oraz ','.

Ok, teraz bardziej konstruktywne uwagi:

Dlaczego ta funkcja nazywa się _get a nie get? Nazwanie jej tak nie
ukrywa żadnych nazw (to przecież funkcja lokalna). Powoduje za to
ignorowanie warninga o nie używanej zmiennej (nie są one generowane dla
zmiennych o nazwie zaczynającej się '_').

Zamiast Red()/Black() zrobiłbym flagę is_red (tudzież is_black),
porównywanie będzie szybsze a obiekty mniejsze.

> +   class MapNode ('a, 'b) implements IComparableTo (MapNode ('a, 'b))
> + 	 {
> +  	  public key : 'a;
> + 	  public val : 'b;
> +    	  public cmp : IComparator ('a);

Ten komparator na pewno nie może siedzieć w każdym nodzie, jeśli to ma
być pamięciowo efektywne. Tak, wiem, tak to działa w tree.n, ale tak
nie ma działać.

> +(*
> +BEGIN-INPUT
> +END-INPUT
> +*)

A co z OUTPUT?

No nic to tyle marudzenia :)

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




More information about the devel-pl mailing list