Log of the #nice channel on irc.freenode.net

Using timezone: Central European Time
<bonniot>good night00:21
* bonniot leaves
* magnus-- joins02:45
* CIA-3 leaves04:12
* CIA-3 joins
* CIA-3 leaves04:21
* CIA-3 joins04:22
* CIA-3 leaves05:10
* ChanServ leaves
* arjanb leaves
* magnus-- leaves
* ChanServ joins05:19
* CIA-3 joins
* magnus-- joins
* arjanb joins
* bonniot joins10:09
hi10:20
<arjanb>hi10:26
* CIA-3 leaves10:28
* CIA-3 joins
<arjanb>after reading that last email i think nested patterns would be easier to implement10:33
<bonniot>easier than which part?11:22
<arjanb>than the methods conditions11:29
<bonniot>why? the conditions are just a boolean expression, it's much simpler than deep patterns11:30
<arjanb>coverage testing, no need for new operators11:31
<bonniot>it's not planned to have special coverage testing with boolean conditions11:32
for that, I agree nested patterns would be better11:33
but it would be much more work in any case
and the only new operator is `is`, which is very simple, just a shorter version of instanceof11:34
<arjanb>i will try to untangle pattern today11:36
<bonniot>great!11:37
so yesterday's changes were preliminary work?
<arjanb>no i wanted to do that anyway11:38
<bonniot>yes, it looks clearer in Dispatch now :-)11:41
btw, in Pattern.java:347, the test of !that.atIntCompare() should be useless, because that case is handled just above11:50
<arjanb>indeed11:51
<bonniot>actually, for the same reason, the two atNull tests there are also useless12:41
<arjanb>that nonNull pattern is a bit odd is has no specific codegeneration or byterepresentation13:40
<bonniot> if (atNull())13:45
return Gen.isNullExp(parameter);
if (atNull())
return "@NULL";
<arjanb>nonNull pattern
<bonniot>sorry
are you saying it's a bug, or what?13:46
<arjanb>i don't know if it's a bug but i'm not sure what to do with this pattern13:48
<bonniot>in what case is it generated?13:51
<arjanb>MethodImplementation:11113:53
<bonniot>right
i think that's needed because of overriding13:54
<arjanb>then i don't understand why it works without specific codegeneration
<bonniot>i'll check13:56
i see14:11
it's correct, because thedefault case is to do instanceof, and only non-null values will succeed the instanceof test14:12
but it would be more efficient to generate a != null test
(this case is I think very rare, but still :-)
<arjanb>it does instanceof of what? Object?14:14
<bonniot>yes14:15
since tc is null
<arjanb>no tc is PrimitiveType.sureTC 14:16
<bonniot>right14:17
still it's Object
it happens for instance in:
<T> boolean foo(Number n, ?T s) = false;
override <T> boolean foo(Integer, !T s) = true;
<arjanb>i see14:19
* ChanServ leaves16:50
* ChanServ joins16:52
* ChanServ leaves16:53
* ChanServ joins16:54
* ChanServ leaves16:56
* ChanServ joins
<arjanb>it's more work than i expected16:59
<bonniot>any pb?
<arjanb>no17:00
i'm not sure yet how to do leq and disjoint in nice code17:01
<bonniot>are you rewriting in Nice at the same time?17:02
<arjanb>the subclasses yes
<bonniot>isn't that going to be difficult for bootstrap?17:04
<arjanb>i keep the abstract Pattern class in java so i see no difficulties17:06
but any idea for leq and disjoint?17:12
<bonniot>the difficulty could be to create the specific patterns17:33
it seems leq and disjoint would very naturally be multi-methods17:35
<arjanb>the problem with multi-methods in this case is many rules containing (something, any) and (any, sometthing)17:37
<bonniot>wdym?17:39
<arjanb>(NullPattern, other) , (AnyPattern, other), (this, NullPattern) , (this, AnyPattern)17:41
now i need to add every combination of NullPattern with other patterns to resolve ambiguiety17:42
<bonniot>only (N,N) (N,A) (A,N) and (A,A)17:44
<arjanb>sigh my brain doesn't work well with these temperatures17:46
<bonniot>:-)17:47
but still, it's a bit annoying
that's an example of why partial ordering based on source order would be useful17:48
<arjanb>i'd rather have a switch statement that accepts user ordered patterns17:49
<bonniot>that wouldn't allow you to add other cases in another package, for instance17:52
<arjanb>true but mostly you need either user ordering or extensions in other packages18:00
<bonniot>not clear. in this case it would make sense to define new pattern types in other packages (like for a specialized language based on Nice)18:04
<arjanb>i hope Nice will get extensible enough that the last isn't needed18:12
<bonniot>right. but this is just an example that such facility can be needed18:17
<arjanb>no problem with source ordering if it's explicit18:19
<bonniot>how do you see it being explicit?18:39
what syntax?
<arjanb>a modifier at method declaration19:02
* magnus-- leaves19:32
<CIA-3>03bonniot * 10Nice/ (3 files in 2 dirs): Fix array dimensions being overloaded symbols.19:46
<arjanb>do you want to make more commits this evening?20:01
<bonniot>i don't plan to, why?20:02
(there are just the useless tests, but I assume you are changing those anyway)
<arjanb>well i'm changing quite a few files now and don't want confusion20:03
<bonniot>ok, no pb
i'm going now anyway20:04
cu later
<arjanb>bye
* bonniot leaves

Generated by Sualtam