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

<bonniot>hello arjan11:24
<bonniot>oh oh, it seens there is a bug in the log bot...
<bonniot>it just closed the page with </table>... and now writes after that
ah, i see the bug in the source :-)11:27
fixed in the source11:29
<arjanb> test
<bonniot>with the log, we can mesure how long it took to fix a bug :-)
i thought of that. html tags are quoted11:30
<bonniot>now let's see11:36
and tags? </html>
you can even put links: http://nice.sf.net !11:37
tags are quoted, so that you cannot mess up the formating og the log11:38
so you will be the only one with a marker in your text, because you wrote <b> before I installed the bot that handles this :-)11:39
i added a page for the channel on the main page. what do you think?11:46
<arjanb>looks good11:47
<bonniot>do you still have courses?11:48
<arjanb>we have now almost every kind of medium for to user to give feedback so hopefully we get now some more feedback11:49
<bonniot>we'll see :-)
i think many people are interested to try the language, but lack the time to contribute/discuss11:50
<arjanb>I have a few thing to do for study but I don't have any lectures before the vacation
<bonniot>for instance, there are quite a lot of people on nice-info, but very few actually write
<bonniot>looks interesting11:52
can you sum it up?
<arjanb>just someone who finds the lack of feedback the biggest problem in the project he works on11:54
<bonniot>read half of it
it seems we have more feedback than him :-)11:55
oh, I suppose it is three people reporting bugs, not three bug report that he had11:56
still, we already had a bit more
<arjanb>I was thinking that overloading for returntypes can be useful at least for operators
<bonniot>changing the subject, he? :-)
yes, i think too that it can be useful11:57
and also using the context in nested calls
<arjanb>int x = 1000000;
long y = x*x;
now we have loss of precission11:58
<bonniot>so you would like two operators?
int `*`(int, int)
long `*`(int, int)
<arjanb>or making that operator a macro finding out the returntype
<bonniot>that's more of a hack, and it would be more difficult to use for normal users11:59
with two operators, we would have to resolve the ambiguity, like in12:00
let y = x * x
i suppose that taking the most precise return type is a good rule in general
<arjanb>but not for primitive's
<bonniot>i wouldn't like have a special rule for primitives12:01
besides, this general rule would keep the compatibility12:02
since now int * int has type int
the idea is also that if people declare things of type int, it is that they want that bit length, or they know that it will fit12:05
if they need longs, they can declare it
if they need bigint too
don't you think?
<arjanb>yes they will be used to it12:06
<bonniot>i think for objects, overloading on the return type can be useful for unrelated types12:07
for instance:
class Person {12:08
<arjanb>a typesystem that could infer the range of primitive would be far too complex
<bonniot>String display();
HTML display();
given an HTML type that represents an HTML document
<arjanb>yes it will keep the method name cleaner12:10
<bonniot>type system: yes, range arithmetic diverges very fast
besides, sometimes you do want the modulo 2**32 (ok, not so often :-)
why didn't you commit your last change yesterday?12:11
the tuple syntax
<arjanb>I want to make work for anonymous functions first but I could commit it12:12
<bonniot>no its ok
are you at the university now?12:13
<arjanb>yes and no I live on the campus12:14
<bonniot>do you still have courses?
and you have a LAN? :-)
<arjanb>yes but no lectures
<bonniot>what's the difference?12:15
<arjanb>that I don't need to leave my roon
<bonniot>you have courses in your bedroom?!?12:16
<arjanb>No I have only a few assignments to make12:17
<bonniot>i see
software projects?
<arjanb>not this time
<bonniot>so that's why you can work on the compiler sometimes during the day ;-)12:18
<bonniot>i'm reading the comments on the article12:24
it's interesting
so do you think we miss anything now?
<arjanb>no we have a mailinglist forum wiki bugreports irc mail what's else could we do to get feedback12:26
<bonniot>sure, in terms of "features". it does not mean that they are properly used, though12:27
<arjanb>and very important the response time is very short
<bonniot>yes, several people thanked us for that
i think for the moment they are especially useful for the developers, which is a big step12:28
and #nice will only help
the bug tracker is used by a few users
so it's a start12:29
there also needs to be a balance between development and discussions with users anout new features
now we have quite a few ideas that need implementation12:30
so we are not starving for feedback
on the other hand, comments about the design (constructors, enum) would be useful
<arjanb>the only thing i don't understand is why there are only a few people interested in language design
<bonniot>i think for most people, languages are given. they don't imagine that you can create new ones :-)12:31
of they think it is only for experts
i remember i when i met a university teacher in my second year12:32
and we discussed about informatics research
he mentioned writing compilers and new languages
that was a revelation for me
until then i only imagined using languages, not creating new ones!
and now i am fully into that...12:33
there is a good language community of people on LtU12:34
i will announce nice 0.8 there soon, and say that we are interesting in feedback about future design12:35
maybe this can interest some people there
<arjanb>I hope so constructors and fields vs properties can use some feedback12:36
and classinvariants are tricky things12:38
I'm away for about half an hour12:42
<alexgreif>hi !!!13:07
thank you Daniel, for installing sirc and for the account!
<alexgreif>... yes I changed the passwd :)
we had an interesting discussion with arjan: http://pauillac.inria.fr/~bonniot/nice@freenode/2003-06-16.html
<alexgreif>I only have one duty: I have to use the ssh connection otherwise it will be closed from work after 10 minutes idleness :)
yes I followed it a bit on the logs13:10
<bonniot>oh, you already read it? :-)
your work server closes the connection?
<alexgreif>only a bit, I just arrived here b yplane
<bonniot>where are you?13:11
<alexgreif>from my laptop I have to telnet to an internal ssh server and from there ssh to your server. OUR ssh server terminates it after idleness. I think its a security issue from my company13:12
at work in munich
<bonniot>and where were you yesterday, then?
<alexgreif>behind the msg firewall, thats why i cannot connect to the irc directly
yesterday I was in berlin at home with dsa 13:13
<bonniot>you travel every week from berlin to munich?
<alexgreif>yes. from monday till csutortok in munich. friday till sunday in berlin at my family13:14
<bonniot>not ideal, is it?
does your company pay you plane tickets every week?13:15
<alexgreif>its project related. the project goes till 1.october
plane and hotel :)
<bonniot>i see
<alexgreif>its a good company, ... better than others :) but we have unfortunately not very much to work, thats why we have to go where the projects are13:16
is it safe to make the nice hompage as wiki, because of malicious attacks? or do we want to make many backups :)
<bonniot>this is one problem13:19
another is that i would first like to see if the looks of the wiki can be improved enough
that we want the homepage to be in it too
<alexgreif>you can create every thing waht you can make in html too, like using css ald javascript. So I promise I could port the current nice homepage to wiki, and you would not realize it that wiki is behind13:20
i'll be glad to see that
the current wiki is not very pretty13:22
<alexgreif>As Im at work dont wait fro immediate replies on irc :)
the current is an example , a very primitive one. flow4j is a better one.
<bonniot>is there a long delay?
oh no, because soetimes you might even work? :-)13:23
<alexgreif>I mean there is no technical delay, but Im also earning money :)))
az asztal alatt irc-zek :)13:24
<bonniot>in 5 years, maybe you will make money being a Nice consultant. :-)
<alexgreif>a szabad idomben
<alexgreif>ok I make holdiays with you and arjan and in 2 years we can sell Nice :)13:25
<bonniot>wdym you make holidays?
<alexgreif>you want me to port Nice homepage to wiki?
<bonniot>i don't want to sell Nice, but keep it a free software...13:26
i think changing the template of the wiki is the first step
<arjanb>hello alex
<alexgreif>hi arjan!13:27
<arjanb>should this be valid ((String s, int i) tuple) => { ... } ?13:38
<bonniot>it should probably be, since it is already for toplevel functions, right?13:39
<alexgreif>d: yes the template has to be changed first. but before that I have to analyze the current html code of the site13:49
you might want to know that the pages are generated from an xml docbook format + a stylesheet13:52
but the formatting is done in html directly, so maybe you don't care
<alexgreif>I only need the css and the current html. wiki has not internal xsl transformations13:58
<bonniot>so it's there on the web, then :-)13:59
how can you work on the new template and test it?
can you have two templates, and leave the current one as the default until the other one is better?14:00
or use a test wiki site?
<alexgreif>I have twiki installed on my laptop, where I develop the flow4j pages too :)) I upload the flow4j twiki pages after each change14:04
<bonniot>so you could write a Nice template for the flow4j wiki ;-)14:05
<alexgreif>I make a new Web on my lokal wiki :9
yes, I take the thmal from the sf site.14:08
thmal = html14:12
<arjanb>as i suspected parser anonumous functions and the tuple things is very tricky14:18
if a file was first reversed than parsing would be somewhat easier14:22
<bonniot>i heard that some compilers parse from the end :-)
maybe it would help your case, but other parts might become more difficult14:23
i'm sure you can make it :-)
<arjanb>in nice there are much thing of the form ( ... ) ... looking from the other side these are simple14:25
I know that for text files some compression algorithms work better if you reverse the file14:28
<bonniot>can't you use lookahead?
<arjanb>maybe first I have to find the exact location of the problem14:30
* alexgreif 14:42
do you plan to port the sf site to wiki? Because you also said that there are security issues. Or we port it and you put the wiki stuff on another server? Should I start to port to wiki?14:47
can you reach the logs at http://pauillac.inria.fr/~bonniot/nice@freenode/2003-06-16.html14:49
<bonniot>if we had another server, it could be an option to put the wiki there, but at the moment i don't know one
<alexgreif>it seems that I cannot connect the logs. you aslo have problems?
<bonniot>alexgreif: what do you mean by porting to wiki?
i can read the logs
<alexgreif>porting the nice homepage to wiki
now its going. maybe it was a short fallout :)14:51
<bonniot>didn't we say that the first step is to create the new template?
<alexgreif>yes but you said that you have concerns because of security
<bonniot>and so?
<alexgreif>do we take the risk to have the homepage in wiki?
<bonniot>that's something we can decide later14:52
again, the first step is the template
it will be useful in any case
<alexgreif>ok, I should start with it.
<bonniot>even if we don't change the main pages, it's good to have the wiki look better, and more similar
yes :-)14:53
<alexgreif>thats what I wanted to know :-)
<bonniot>if it would be useful?
<alexgreif>the port is useful if we use it. If we say its too dangerous to have the homepage o+rw then we cannot use it14:55
<bonniot>yes we can, for the wiki itself14:56
so my idea is: don't think about the main page14:59
think about changing the template for the wiki, so that it integrates better with the main pages
use the same colors, ...
display the title in bigger :-)
<alexgreif>for me ist two cases 1) the homepage 2) the public wiki pages Dev and Doc. 15:01
<bonniot>ok, so the idea is to tackle 2) first15:02
<alexgreif>we can change the template for Dev and Doc, no problem. I with port I mean 1)
<bonniot>ok, so don't port now :-)15:03
let's first see how 2) goes
<alexgreif>aha :) I will change the template for 2)
<bonniot>if it's good, it will be a good starting point for 1)
communication is tricky. which shows that we should be careful, and explain things clearly :-)15:04
<alexgreif>I will leave the necessary functionality for 2) but take much stuff away. I will leave DIFF and EDIT
and ask twice if something is not 100% clear
<bonniot>what do you want to take away?
exactly :-)
<alexgreif>Ref-by, printable (currently unused), 15:05
the last line: Parents: WebHome
also on the top: TWiki Know, Sandbox. (I think its unnecessary)15:07
<bonniot>the list of webs is not part of the template, it's a configuration of the wiki15:08
i agree to simplify the look
maybe the things removed could go in the "More" section15:09
<arjanb>the syntax works now but not the compilation
<alexgreif>the template contaons a link that includes the header and the footer.
<bonniot>arjanb: so there is progress :-)15:10
<alexgreif>"More" section? where is it?
<arjanb>let ((String, int))->() foo = ((String s , int i))=> {};
at gnu.expr.LambdaExp.declareClosureEnv(LambdaExp.java:366)
at gnu.expr.LambdaExp.allocChildClasses(LambdaExp.java:904)
at gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1468)
at gnu.expr.LambdaExp.compileSetField(LambdaExp.java:551)
at gnu.expr.LambdaExp.compile(LambdaExp.java:644)
at gnu.expr.Expression.compile(Expression.java:93)
<bonniot>alexgreif: the last link at the bottom line
at gnu.expr.LambdaExp.declareClosureEnv(LambdaExp.java:366)
at gnu.expr.LambdaExp.allocChildClasses(LambdaExp.java:904)
at gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1468)
at gnu.expr.LambdaExp.compileSetField(LambdaExp.java:551)
at gnu.expr.LambdaExp.compile(LambdaExp.java:644)
at gnu.expr.Expression.compile(Expression.java:93)
at gnu.expr.BindingInitializer.emit(BindingInitializer.java:56)
at gnu.expr.Compilation.dumpInitializers(Compilation.java:491)
at gnu.expr.Compilation.dumpInitializers(Compilation.java:483)
at gnu.expr.LambdaExp.generateClassInit(LambdaExp.java:1098)
at gnu.expr.Compilation.compileAll(Compilation.java:1604)
at gnu.expr.Compilation.generate(Compilation.java:1571)
<bonniot>arjanb: ok!
<alexgreif>you mean the grey line, the "More" link is for "More Diffs". I see no other More 15:12
<arjanb>daniel: should send a diff again or is this a know problem
<bonniot>arjanb: no it is not known15:13
i don't have time to look at it now
if you cannot debug it, then i will look at it later today
one way to think about the bug is:15:14
what is the equivalent code that should be writen by hand without this feature?
<arjanb>yes I will try and if not succesful i will send the diff15:15
<bonniot>if that code doesn't work, then it is a bug with the current compiler, and we can forget about your changes
if that code works, then it is a bug in your generation. then you can try to see what you do differently from the manual code
alexgreif: no, "More" brings a page with more actions, like rename, compare, refby. so if you remove actions from the main view, you can add them on that page, so they are still possible15:16
<alexgreif>you can trigger it only in the url? istead of .../view/...15:18
<arjanb>it's not a bug in my code
let ((String, String))->() foo = ((String, String) tuple )=> {15:19
String s;
String t;
(s, t) = tuple;
same exception
<alexgreif>daniel: ah I see what you mean :)
<bonniot>arjanb: ok, so that's one step15:34
<alexgreif>d: yes we can put many things in "More"... I will make a suggestion and efzer we can talk about it.
you can also make a prototype template :-)
it's a good base to start the discussion
and adding or removing one action won't change the template too much, so it's ok to discuss it afterwards
<arjanb>this code works correctly using the new feature
List<(String, String)> list = new ArrayList();
list.foreach(((String s, String t))=>println(s+t));
<bonniot>nice :-)
<arjanb>let ((String, String))->() foo = ((String s, String t))=> println(s+t);
this works if the let is local
so the problem is the combination of anoymous functions and global constants and tuples
<bonniot>oh, the above is defined as a global constant?
<alexgreif>daniel: I will make a ProTo wiki user and he will use the new template so you can check the layout all the time
<bonniot>alexgreif: ok
arjanb: i see. does it still make a bug if you don't use tuples at all?
<alexgreif>this only in the Dev wiki in the beginning.
<arjanb>daniel: only buggy using tuples
<bonniot>anyway, your implementation is not buggy, this is an existing bug
<arjanb>yes I only have to make more testcases
<bonniot>always a good thing
<arjanb>how is it going with the type stack and gnu.bytecode?15:39
<bonniot>the method call is implemented, but the type stack needs fixing
i'm not sure when i'll have time to work on that, but i hope it's done by the end of the week
do you think you can implement simple enums by then?15:41
<arjanb>I can try but I'm away friday and the weekend15:44
<bonniot>it could be nice to release 0.9.0 with at least those two more features15:45
we'll see how it goes
<alex_greif>this was the case that our ss killed the connection :((16:21
unfortunately my old nick still exists in the channel
<bonniot>I killed it (your old self :-)16:30
<alex_greif>ah, ok. thanks16:43
<alexgreif>ok, now Im thold one :9
* alexgreif 16:50
<bonniot>i'm reading a research article, where they call mono-methods "selfish methods" (because they only dispatch on self, or this) :-))17:09
so moaybe we could call multi-methods "unselfish methods", or more simply, "nice methods" :-)17:10
<alexgreif>multi-method sounds good.17:12
its a nice characteristic to have multi-methods
btw: is the word "bot" the abbreviation of "robot"?17:13
the tuple changes are commited17:16
* alexgreif 17:24
* alexgreif 17:33
* alexgreif 17:43
* bonniot is away: for one hour17:48
I'm away for some time18:33
* alex_greif 18:36
* alex_greif 18:46
<alexgreif>daniel: it was you, or the timeout?18:49
<arjanb>daniel have you seen that some of the automatic test have failed?19:16
bryn keller has written an article about static vs dynamic typing: http://www.xoltar.org/misc/static_typing_eckel.html19:37
<alexgreif>I have to go. cu till tomorrow.19:48
* bonniot is back (gone 02:02:41)19:51
good to know you are looking at the test results :-)19:52
i saw they failed yesterday, but it was because it fetched older code from cvs19:53
as you might have seen from the SF status page, they have moved the cvs pserver to a backup server, which is about 24 hours late
so it tests a code that is not exactly the latest one19:54
have you tried to see what the error is?
<bonniot>about Bryn's article: i knew about it, because he asked me to review it, and i made some comments19:57
i did not see the last version, though19:58
<arjanb>i completely agree with bryn's article20:08
great that someone finally opose to all these "testing makes static typing superfluous" and "dynamic typing is better than static typing because of python is more expressive than java/c#" articles20:16
was it announced largely? will it make noise?
<arjanb>I have only seen a link on the ltu forum. i don't know20:25
<bonniot>the bootstrap problem in the automated tests is:20:38
~/OSS/tester/builds/Nice/stdlib/nice/lang/bigint.nice: line 32, column 1:20:39
No method called < is compatible with these patterns
~/OSS/tester/builds/Nice/stdlib/nice/lang/booleans.nice: line 15, column 1:
No method called ! is compatible with these patterns
all related the Comparable interface
it is about method implementations that don't find the related declaration
could it be connected to your change in that area?
have you tried bootstrapping the compiler since?20:40
<arjanb>multiple times
maybe was the automatic test done half in a change20:41
If you bootstrap now by hand does that give problems?
<bonniot>that's possible20:42
i am relauching it now, we will see
although with this backup servers, maybe they are updated only once a day... :-(
it fails in the same way20:47
<bonniot>i'm trying from my private tree20:48
it is working normally20:49
so it must be a cvs problem20:50
we'll see if it works tomorrow
<arjanb>good that's not a real bug
<arjanb>I trying to fix a bug that's is a bit trivial21:09
class A{}
class B extends A{}
interface I<+T | B <: T>{}
class X<+T | A <: T> implements I<T>{}
void foo(I<B>);
this case should fail but didn't yet21:10
I have this case fail now but in doing that i have 1 regression too21:11
<bonniot>why do you think it is trivial?
do you understand why?
<bonniot>it's risky to implement something until there is no regression21:12
you need to know exactly what you are doing, otherwise you might introduce bugs for cases that are not in the testsuite yet...
<arjanb>I know almost what I'm doing enabling class constraints in resolving methodbody's to methoddeclarations21:17
but this testcase goes wrong maybe there is something different in super methods:21:18
class A {}
class B extends A {}
abstract class A<B> extends AbstractSet<B> { }
add(a@A, b) = super;
java.lang.IndexOutOfBoundsException: -2
at mlsub.typing.lowlevel.BitVector.set(BitVector.java:115)
at mlsub.typing.lowlevel.BitMatrix.set(BitMatrix.java:166)
at mlsub.typing.lowlevel.K0.leq0(K0.java:682)
at mlsub.typing.lowlevel.K0.leq(K0.java:648)
at mlsub.typing.lowlevel.Engine$Constraint.leq(Engine.java:777)
at mlsub.typing.lowlevel.Engine.assertFrozens(Engine.java:527)21:19
at mlsub.typing.lowlevel.Engine.leave(Engine.java:101)
at mlsub.typing.Typing.leave(Typing.java:106)
at bossa.syntax.MethodBodyDefinition.findSymbol(MethodBodyDefinition.java:211)
at bossa.syntax.MethodBodyDefinition.lateBuildScope(MethodBodyDefinition.java:331)
at bossa.syntax.AST.typedResolve(AST.java:105)
<bonniot>this looks like a type parameter that was not introduced in the context
<arjanb>this could be an existing problem in superexp21:20
<bonniot>i'll go and have dinner21:24
what are your plans?
<arjanb>I will send a diff of my changes related to this and tomorrow i will start with enum or trying to fix something else21:25
what about the previous problem, did you solve it?
<arjanb>which previous problem?21:26
<bonniot>you should commit a testcase for it
the global constant anonymous function with tuples
please commit a testcase for it
<arjanb>there is already a testcase for that
i'm going...21:27
* bonniot is away: eating...
* bonniot is back (gone 00:53:03)22:20
any news?22:26
<arjanb>no I forgot to the send the diff done now22:28
just read the testcases for the new tuple syntax:22:58
maybe instead of calling println, they could return values, so that the test can assert on the return value, to check the code actually behaves as expected22:59
<arjanb>I will change that23:00
i think it's a good general rule for testcases
println does not make much sense, because the result is not seen by anybody23:01
using assert gives more information
<arjanb>yes but when I'm running the testcases outside the testsuite then print gives more info23:02
<bonniot>ok, so it's fine to have print, but there should also be asserts23:08
ok, i'll be going23:14
<arjanb>assert do help it's buggy with nested tuples :-(23:16
<arjanb>I have no idea of the problem yet
nice.tools.code.EnsureTypeProc has wrong type (null)
at gnu.mapping.WrongType.make(WrongType.java:56)
at defaultpackage10.fun.foo(F:\Nice\testsuite-temp-folder\defaultpackage10:4)
at defaultpackage10.fun.main(F:\Nice\testsuite-temp-folder\defaultpackage10:7)
assert foo(("abc",('x',3)))==3;23:17
int foo((String s,(char c, int i))) = i;
<bonniot>hum, so you should submit a testcase for that too...23:18
i have to go now
good night!
<arjanb>good night cu tomorrow
well it seems that it is an existing bug.23:28
I'm too tired to look for bug now.23:33