[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