01:13:35 -!- iamcal has joined. 03:45:21 -!- Toreun has joined. 05:45:27 -!- Tril has joined. 06:38:19 -!- iamcal has quit ("buh bye"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:04:37 -!- WildHalcyon has joined. 08:13:09 -!- WildHalcyon has quit ("Goin' away now!"). 19:02:49 -!- bbls has joined. 19:03:00 hello 19:03:44 hi 19:03:56 hi Toreun 19:04:14 how are you, bbls? 19:04:18 hmm 19:04:29 thinking to create a new language :) 19:04:40 [yes.. yet another one :)] 19:05:16 hehe 19:05:30 how many have you made 19:05:31 ? 19:05:50 well i have no ideea :) 19:05:57 actually it's the same language 19:06:11 improved, name changed several times, etc 19:06:21 ah, I know how that is 19:06:24 how's it work? 19:06:24 :) 19:06:27 well 19:06:31 i have certain problems 19:07:27 especially with floating point stuff 19:07:42 because using floats 19:07:46 floating point? an esolang with floats? 19:07:56 not many of those, iirc 19:07:58 a+b-a is not necesarly b 19:08:39 that's true 19:08:48 where's the problem arising? comparisons? 19:08:57 not just comparisons 19:09:04 my plan is to create a language 19:09:23 that is designed in a such way so that the compiler can easly prove that it can't generate exceptions for any input value 19:10:48 oh. hmm 19:10:57 for example 19:11:03 f(x)=1/x 19:11:18 the compilation should fail because division is not defined for x=0 19:11:27 you have then to define 19:11:38 NonZeroReal:= [x | x in Real and x<>0]; 19:11:48 f(NonZeroReal x):=1/x; 19:11:48 yeah 19:11:57 this is ok now 19:12:15 althrought the function 19:12:18 f(x):=switch 19:12:19 { 19:12:28 x= 0 : 0; 19:12:38 x<>0 : 1/x; 19:12:38 } 19:12:47 is always defined, so it's ok 19:13:11 yeah 19:13:27 more complex situations arise from 19:13:42 f(x):=1/(3*x^2-2*x+1); 19:14:01 the compiler needs a builtin symbolic algebra engine 19:14:16 so that it can solve that equation and find that it has no real solutions 19:14:21 so that the function is always defined 19:15:03 yeah 19:15:21 are there any symbolic algebra libraries out there? 19:15:29 don't know 19:15:35 but i want to code that too 19:15:46 not just use some out of the box lib 19:15:52 because it need some other stuff 19:16:26 like patterns of recursivity that can be proven to be finite by induction, etc 19:16:41 hm 19:16:53 because you have to prove that the recusrivity is finite 19:16:57 yes 19:17:07 you can't do that in general 19:17:22 but for particular algorithms/particular patterns you can 19:18:26 so you need to build some kind of database 19:18:39 also this database will contain basic identities such a+b=b+a 19:18:54 or basic inferences such a>b -> a+c>b+c 19:19:10 yeah 19:20:01 hmm... the TI-89 calculator I *think* uses logic to do most basic inferences, but I have no idea how, rather than a database 19:20:42 you need a database and smart algorithms for searching in the database 19:20:57 you need a database? 19:21:23 the database of proof tips (identities, etc) just what i told you before 19:21:34 yeah 19:21:45 hmm 19:21:54 I suppose you would need basics, thinking about it 19:22:09 obviously there are lot of papers on the net about that 19:22:13 computers can't exactly handle Number Theory, etc. 19:22:24 are there? I haven't looked 19:22:36 but i can't find papers that deal with the problem of limited precision 19:22:43 apart from Turing's thesis with deals with computational theory 19:22:45 that result in problems like a+b-a<>b 19:26:22 yeah 19:27:18 there is no problem for a symbolic math package 19:27:38 but since the program is supposed to run on a real machine 19:27:43 that results in big trouble 19:27:52 a really huge problem 19:27:57 two ways: 1) symbolic computations, 2) keeping miscalculation, i.e. keeping two numbers - result and precision 19:28:19 or keeping 2 numbers, lower limit and higher limit or result 19:28:33 yep, same thing. 19:30:01 but the problem is how you do symbolic computation with that 19:30:54 -!- tonsofpcs has joined. 19:31:57 hi there tons 19:35:38 hmm 19:35:48 it might be possible to write a number 19:35:55 as [minlin:maxlim] 19:36:13 and still do symbolic computations 19:37:15 but you have to provide minlim and maxlim for all primitive operations 19:37:31 -!- Tril has left (?). 20:21:40 wow we had Tril in here 20:23:07 bbls: Somehow I don't think precision is your biggest problem 20:23:23 lament what you think then that's my biggest problem? 20:38:59 well 20:39:03 ? 20:39:04 Would this compile? 20:39:13 for(;;); 20:39:16 return 1/0; 20:39:16 no 20:39:23 since the language is a pure functional language 20:39:31 not an iterative one 20:39:37 UM 20:39:44 You see my point. Hopefully. 20:40:07 well that's why is purely functional :) 20:40:18 also recursion is limited to specific cases 20:40:22 ?? 20:40:27 that are known from database to be finite 20:40:54 also 1/0 would be catched 20:41:05 because division is not defined for 0 20:41:47 What database? 20:42:04 you need a database 20:42:04 So your language will be incapable of running a program that doesn't halt? 20:42:09 yes 20:42:18 it will be impossible to compile a such program 20:42:30 then it's not Turing-complete 20:42:37 also it would be impossible to compile a program that generates exceptions 20:42:42 hence not very fun 20:42:44 not it is not turing-complete 20:43:40 but that does not means that ppl really neet turing-complete languages 20:43:45 *need 20:44:47 Well 20:44:55 If you manage to create a language like that, it will be the first. 20:45:03 yes 20:45:08 i know that 20:45:13 and there are many problems 20:45:15 I'm not aware of any languages in which non-halting programs are impossible which is of any use. 20:45:39 Also, how will you construct this database? 20:45:45 you need a database 20:45:50 that contains all basic identities 20:46:02 such "a>b -> a+c>b+c" 20:46:03 and so on 20:46:11 just like a normal symbolic algebra package 20:46:38 And what does that have to do with recursion? 20:46:53 well 20:47:04 you also have to prove that all recursions in the program are finite 20:47:19 and for that you need to specify in the database 20:47:25 some particular cases 20:47:30 when the recusion is finite 20:47:34 Such as? 20:47:46 f(x):=switch 20:47:47 { 20:47:56 x=0 : 0; 20:48:14 x>0 : f(x)-1; 20:48:15 }; 20:48:31 usually functions that respect that pattern 20:48:36 can be proven to be finite 20:48:40 using induction 20:49:01 Usually, but certainly not always. 20:49:31 as i said 20:49:32 f(x):=switch 20:49:32 { 20:49:32 x=1 : 1; 20:49:37 there will always be a program that can't be compiled 20:49:41 with a specific version 20:49:55 x%2 == 0: f(x/2); 20:49:56 you you can add support for it in next version 20:50:06 else: f(x*3 + 1); 20:50:07 } 20:50:25 "else" is banned 20:50:32 irrelevant 20:50:38 s/else/x%2!=0 20:50:45 not 20:50:47 since 20:50:53 x%2=0 20:50:57 conflicts with first 20:50:58 one 20:51:00 (x=1) 20:51:06 you can't have overlapping conditions 20:51:13 nor you can have missing cases 20:51:30 That's pure nazism :) 20:51:44 anyway, this is irrelevant 20:51:51 it is relevant 20:51:55 no, it's not 20:51:58 because of those restrictions 20:52:03 no, it's not 20:52:07 the compiler will be able to actually do some work 20:52:12 rewriting my function to fit your restrictions is trivial 20:52:21 a(x):=switch 20:52:29 { 20:52:34 er 20:52:36 * lament thinks 20:52:40 first you mix 20:52:47 reals with naturals 20:54:18 a(x):=switch 20:54:22 { 20:54:22 x%2==0: b(x/2); 20:54:22 x%2!=0: b(x*3+1); 20:54:22 } 20:54:22 b(x):=switch 20:54:25 { 20:54:28 x==1: 1; 20:54:30 x> 1: a(x); 20:54:33 } 20:54:35 what's wrong with it now? :) 20:54:54 well 20:55:06 b(x) does not catch x<1 20:55:18 let's pretend there's a clause for that there. 20:55:26 What now? 20:56:09 a output is always real 20:56:32 Do you see my point or do you not? 20:56:35 it is not ok 20:56:40 since x is not decreasing 20:56:42 Because if you don't, there's little sense in talking to you. 20:56:59 So your language doesn't really support recursion. 20:57:11 for a(11) for example 20:57:19 you get infinite loop 20:57:24 It looks a bit like recursion, but actually it's just loops with a decreasing counter. 20:58:10 Correct? 20:59:02 got it now 20:59:10 you transform x into a multiply of 2 20:59:16 and you keep dividing it 21:04:18 anyway that does not means that's impossible 21:04:27 it just means that it's hard 21:04:36 What is? 21:04:52 to write the compiler 21:05:04 so that it can recognize such patterns 21:05:19 if there is something that can be done by a human brain 21:05:26 then a computer can do it too 21:05:27 But it won't be able to compile this program? 21:05:39 as long as it is clearly defined 21:05:52 if the program is finite it will compile 21:06:05 if the compiler proves that it is not finite won't compile 21:06:27 in the case that it won't be able to either prove either disprove 21:06:36 it will refuse to compile too 21:06:46 Sounds very, very useless. 21:06:57 Can't even write hunt the wumpus in it. 21:07:29 what algorithm is that? 21:07:37 It's a game. 21:08:00 it is an infinite game? 21:08:08 Most games are. 21:08:32 well, there has to be a solution to that too 21:08:43 No, there hasn't. 21:09:07 When a language isn't Turing-complete, it doesn't "have" to have anything. 21:09:35 oh 21:09:41 there is one thing i've missed 21:09:52 you can't get an infinite game 21:09:54 ever 21:10:05 every program that implements a game is finite 21:10:27 just imagine an automata 21:10:42 althrought the number of states the system passes thru 21:10:54 the actual pass from one state to another is finite 21:11:03 always, for any game 21:12:20 * lament doesn't get it 21:12:32 ok 21:12:38 imagine a function 21:12:46 that receives a number of moves 21:12:52 (one from every player) 21:12:59 and then outputs the state of the game 21:13:22 (eg: a bitmap) 21:13:38 althrought the size of the list of moves 21:13:40 is indefinite 21:13:43 the actual process 21:13:47 of computing the state 21:13:48 is finite 21:13:56 (since the number of moves is always finite) 21:14:06 The number of moves is finite? Why? 21:14:14 not the number of POSSIBLE move 21:14:22 the number of moves realised by the players 21:14:46 let's say you want a game 21:14:54 where one person things about one number 21:15:03 and the other person tries to guess it 21:15:26 for simplicity then game ends at first guess 21:15:39 obviously there is an indefinite number of moves 21:15:45 but the actual number of moves 21:15:48 is always finite 21:16:11 look here: 21:16:28 State function(move_list list1, list2) 21:16:30 { 21:17:07 return state 21:17:08 }; 21:17:24 the length of list1 and list2 is indefinite 21:17:25 but always finite 21:17:28 do you get it? 21:17:58 no, because it's not 21:18:36 the number of moves 2 playes can make is indefinite but ALWAYS finite at a moment of time after they started the game (when you compute the new state) 21:19:07 do you get it now? 21:19:20 for example 21:19:27 Sure, the state is finite. 21:19:30 let's say we have a game every 10 seconds 21:19:31 -!- tonsofpcs has quit (Read error: 104 (Connection reset by peer)). 21:19:32 The point is, the program doesn't halt. 21:19:39 And therefore isn't allowed by your compiler. 21:19:59 it is since the actual computation of the state uses a finite number of elements (since the lists are finite) 21:20:07 so therefore the program is finite 21:20:12 so therefore it can be compiled 21:20:49 simply put, f(x):=combine_state(f(x-1), last_move); 21:20:50 It doesn't halt 21:20:56 f(;;) is "finite" 21:21:02 no 21:21:03 It doesn't have any state at all 21:21:07 f(;;) is not finite 21:21:13 and i don;t have a such construct in my language 21:21:28 er i meant for(;;) but anyway 21:22:02 for a specific list of moves the function is always finite 21:22:16 that list is taken as players make their moves 21:22:23 so therefore it is always finite 21:22:52 (althrought it tends to grow towards +infinite, it will never reach that) 21:23:28 what is infinite is the number of all possible game end starting with a specific number of moves already done 21:23:56 and trying to write a program that finds all thos solutions is invalid in any language you write it 21:24:24 do you get it now? 21:25:36 I think you're crazy. 21:25:53 why? 21:26:32 Just becaues. 21:26:34 Because. 21:26:50 I also think your idea can't possibly work, but i don't know enough about it to prove that. 21:36:11 at least until you can do that i have innocence asumption :) 21:46:07 -!- tonsbot has joined. 21:47:41 hi 21:51:52 -!- tonsbot has changed nick to tonsofpcs. 22:27:48 ... 22:27:59 hi tonsofpcs 22:31:55 gtg 22:31:57 bye ppl 22:31:57 -!- bbls has left (?).