On 01/03/2008, at 8:56 AM, Erick Tryzelaar wrote:
> I don't think we did much with our object system. So how can we bind
> to a library like llvm that has an extensive hierarchy of classes?
1. No inheritance
2. No overloading
we can bind it with typeclass functions though :O)
On 10/03/2008, at 9:48 AM, Erick Tryzelaar wrote:
> On Sun, Mar 9, 2008 at 1:48 PM, Sandro Magi <[EMAIL PROTECTED]>
> wrote:
>> This link is broken on the site:
>> http://felix.sourceforge.net/current/speed/en_flx_perf.html
>
> Well isn't that a pain. I'll see if I can fix that. Felix is quite
On 10/03/2008, at 7:48 AM, Sandro Magi wrote:
> This link is broken on the site:
> http://felix.sourceforge.net/current/speed/en_flx_perf.html
The correct link is in the master documentation index.
http://felix.sourceforge.net/doc/en_flx_doc_0001.html
namely
http://fel
On 22/03/2008, at 6:37 PM, Erick Tryzelaar wrote:
> I've decided to try out binding llvm to felix, and I'm getting some
> strange error messages:
>
> Other exn = Flx_exceptions.Free_fixpoint(_)
On library functions explicitly define the return type.
It may fail anyhow.
the problem is distingui
On 23/03/2008, at 10:30 AM, Erick Tryzelaar wrote:
>
> typeclass Value[t] {
> virtual proc dump: cptr[t] = "$1->dump();";
> }
>
> But shouldn't this be a type error? It's neat that if we have a fully
> implemented typeclass that it works on all types, but here it
> obviously won't work. Didn't
On 23/03/2008, at 12:40 PM, Erick Tryzelaar wrote:
> I was asked by someone in #llvm if felix can do polymorphic recursion,
> and I wasn't sure if we could.
Nope, Felix doesn't have second order polymorphic functions so you
can't even talk
about polymorphic recursion.
If you do
fun f
On 23/03/2008, at 3:00 PM, Erick Tryzelaar wrote:
>
> {{{
> foo.cpp: In function 'void
> flxusr::foo::_init_(flxusr::foo::thread_frame_t*)':
> foo.cpp:82: error: 'const class llvm::Type' has no member named
> 'getBitWidth'
> compilation terminated due to -Wfatal-errors.
> }}}
Well, why is th
On 23/03/2008, at 5:39 PM, Erick Tryzelaar wrote:
> On Sat, Mar 22, 2008 at 11:04 PM, john skaller
> <[EMAIL PROTECTED]> wrote:
>> Well, why is this? Seems like a missing header file or something?
>> Isn't getBitWidth a 'const' member of llvm::Type?
&g
uot;;
> }}}
>
The likely problem is that no two languages have the same architecture,
if they did .. why bother with another language?
C and C++ are exceptions here, since one is derived from another.
--
john skaller
[EMAIL PROTECTED]
---
On 14/05/2008, at 1:11 PM, Erick Tryzelaar wrote:
> On May 13, 2008, at 12:57 AM, john skaller wrote:
>
>> The likely problem is that no two languages have the same
>> architecture,
>> if they did .. why bother with another language?
>>
>> C and C++ are e
On 14/05/2008, at 5:05 PM, Erick Tryzelaar wrote:
> On Tue, May 13, 2008 at 11:48 PM, john skaller
> <[EMAIL PROTECTED]> wrote:
>> Yes, it will work easily. Just look at flx_gen. We have to implement
>> each of the BEXE_* and BEXPR_* things in LLVM.
>>
>>
ompiler would have to unravel expressions
and translate then to procedure calls, which would mean setting
up a correspondence between primitive functions and
their matching procedures.
The best trick I can think of is:
gen sin...
i.e. use a generator to force calls to be unravell
On 18/05/2008, at 3:34 AM, Erick Tryzelaar wrote:
> On Sat, May 17, 2008 at 3:36 AM, john skaller
> <[EMAIL PROTECTED]> wrote:
>> No, we do just this for C. You do it like this:
>>
>> fun sin: float -> float = "sin($1)"
>> requires header &quo
On 18/05/2008, at 9:05 AM, Erick Tryzelaar wrote:
> I've started a fork of felix to modify our compiler's backend to
> target llvm instead of c++.
Why fork it? Why not a single compiler with a switch?
--
john skaller
locks, which is needed
for many analyses, eg control/data flow.
>
> Fifth, where'd you all go? I hope we can get some more involvement
> to help me with all this :)
I'm still working on my boat.. I'm here .. though I just got a $2500
bill from Telstra
for my wireles
On 23/05/2008, at 7:59 AM, Erick Tryzelaar wrote:
> On May 22, 2008, at 3:12 AM, john skaller wrote:
>
>>
>> On 22/05/2008, at 5:42 PM, Erick Tryzelaar wrote:
>>
>>> What I really want is to really just see the AST in some s-
>>> expressions. So why d
fact, the match kind could easily be partly established by the
type of the argument "e" .. not completely, eg range vs value matches,
but "mostly" .. :)
Clearly this would be better, since then the integer match against
a non-literal value would have a chance to work.
--
john
On 21/07/2008, at 12:20 PM, Jacques Carette wrote:
> The last message I got on felix-language was dated May 23rd, and
> nothing
> since. Is this normal?
> Jacques
The list is still used, there just hasn't been much activity..
--
john skaller
nt
Felix currently uses some special code in some places to eliminate
units .. typically the back end code generators, where it is banned
outright because it creates inefficient code -- since unit has only
one value, the va
On 15/08/2008, at 9:41 AM, john skaller wrote:
As per previous email, "lvalue" is now eliminated from the compiler.
in the library we now have
typedef lvalue[t] = t;
so you can no longer overload on lvalueness. The prefix operator & used
to take an address can now be
On 15/08/2008, at 4:08 PM, john skaller wrote:
>
>
> All this is a hack. In theory,
>
> ++x;
>
> should be a procedure
>
> proc pre_incr: &t -> void;
>
> that is, it should accept a pointer, not a value.
This is now implemented.. you can stil
On 16/08/2008, at 8:27 PM, john skaller wrote:
>
> On 15/08/2008, at 4:08 PM, john skaller wrote:
>>
>>
>> All this is a hack. In theory,
>>
>> ++x;
>>
>> should be a procedure
>>
>> proc pre_incr: &t -> void;
>
be possible to use Python
to start Felix threads, i.e. the Felix event loop (in a thread).
So .. why do this? Well, Felix might get more use doing what it was
originally designed to be -- a library generator -- than as a
program generator. A new programming lan
r "license" for more information.
>>> import pytest
>>> x = pytest.MyPy(10)
>>> print x
(10,)
..which is exactly right! Here is an excerpt from the generated C++:
static PyMethodDef pytest_methods [] = {
{"MyPy", mypy, METH_VARARGS, "./pyt
ython from
scratch to fix this (new Python build technology probably has a config
option
to build the mainline as C++, however getting rid of the code in the
executable
is another story).
--
john skaller
[EMAIL PROTECTED]
-
On 09/09/2008, at 8:47 AM, john skaller wrote:
>
> On 08/09/2008, at 11:42 PM, Jacques Carette wrote:
>
>> Neat.
>>
>> The one obvious question is: how many of those 'Py' are actually
>> needed, and how many are your choice of naming?
[]
> My co
but global scans are ugly .. although 'subsumes' seems to
require that anyhow?
Hmm .. anyhow a germ of a solution ..
--
john skaller
[EMAIL PROTECTED]
-
This SF.Net email is sponsored by the Moblin Your Move
check if the nested procedures slow things down.
No stack frames should be created: loop_ is tail rec.
> fun loop_ (zi:double, zr:double, i:int) =>
>if i <= max_iterations then
> let ?zr2 = zr * zr in
>
On 22/02/2009, at 7:51 PM, Erick Tryzelaar wrote:
> On Sat, Feb 21, 2009 at 9:46 PM, john skaller
> wrote:
>> Check generated code to see if the usage of these is inlined.
>> Also check if the nested procedures slow things down.
>> No stack frames should be created: loo
On 24/02/2009, at 3:13 PM, Rhythmic Fistman wrote:
> Felix runs great on the iPhone!*
>
> Hooray!
>
> My game's running just fine, although I haven't
> been game to garbage collect yet.
>
> *iPod, actually. I don't have an iPhone.
>
How do you load an a
re, got:
> float<2068> * float<2068> * float<2068> -> Vector3::vector3<5144>
> expected:
> unit
> In ./felix/vector.flx: line 3, cols 3 to 50
> 2: {
> 3: struct vector3 = { x:float; y:float; z:float; };
> *
wful lot of editing to make it work (to make
relocatable symbols requires either
renumbering things, or using identifiers consisting of TWO integers
and translating
the first one)
However, Felix is already reasonably fast so i
On 30/03/2009, at 4:56 PM, Erick Tryzelaar wrote:
> On Mar 29, 2009, at 11:09 PM, john skaller wrote:
>
>>
>> On 30/03/2009, at 12:38 PM, Erick Tryzelaar wrote:
>>
>>> Anyone out there interested in having a meeting on the future of
>>> felix? I'
t only apply inside a Felix scope).
Anyhow the big problem is labour.
--
john skaller
[email protected]
--
___
Felix-language mailing list
Felix-language@list
On 30/03/2009, at 10:33 PM, john skaller wrote:
>
> What would be cool is if Felix "nested grammars" could work
> efficiently.
The other thing that would be useful is a way to "insert" new
productions
at "priorities" between others. The obvious example
On 31/03/2009, at 1:12 AM, Erick Tryzelaar wrote:
> On Mon, Mar 30, 2009 at 12:49 AM, john skaller
> wrote:
>> Yes. It never works properly, and is impossible to maintain on
>> multiple
>> platforms.
>>
>> Also, Async TCP/IP is stuffed as we found out,.. s
ave to find a JP on Wed morning so I'm going to
a courthouse then.
--
john skaller
[email protected]
--
___
Felix-language mailing list
Felix-language
Having priorities allows this because you can insert one between
two others, Hmm. Note this required deleting a priority and adding two
more if they're not transitive .. hmmm ...
--
john skaller
[email protected]
---
roke the build. I'll see if I can get it to
> work again.
Ah oh .. NO CHANCE! There's a week's work deleting everything to
do with classes, Elkhound, etc .. :)
--
john skaller
[email protected]
-
1 11:00:00 PM 2009
> UTC+02 Thu Apr 02 08:00:00 AM 2009
> UTC+11 Thu Apr 02 05:00:00 PM 2009
>
> assuming skaller cane make it then.
Yep if I remember :)
--
john skaller
[email protected]
--
te confusing, it
allows this too:
e ^ sin x
which could mean
(e ^ sin) x
if you didn't know better. I've been caught by this myself. Anyhow, an
example where
one wants to *use* the non-transitivity, which requires removing a
previously
existing relat
riorities with:
> Relation [["p1";"p2";"p3";"p4"]]
>
> If you remove + < ^ then you lose the precedence
> of ^ over + and the expression:
>
> a ^ b + c
>
> become ambiguous.
Exactly what is desired by a "strict chain&
formal definition already,
it just doesn't happen to be the one Felix accepts. If the
meta-grammar were itself programmable I might be able to
load the SQL definition directly (or at l
ructor cons, to
> allow the user action to return the appropriate command Bind_to_cons.
>
What happens if the string is not new? add_nt just ignored it so it
was always safe..
--
john skaller
[email protected]
---
ing to note is that priorities didn't work before (dynamically)
so the
code to use them never got debugged properly. The Felix grammar used
to allow encoding priorities somehow but I don't think this ever
got finished and it made the (meta) parser difficult.
--
jo
something now :)
--
john skaller
[email protected]
--
___
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/
On 04/04/2009, at 1:52 PM, Erick Tryzelaar wrote:
> On Apr 3, 2009, at 8:43 PM, john skaller wrote:
>
>>
>> On 04/04/2009, at 1:40 PM, Erick Tryzelaar wrote:
>>>
>>> John and Emmanuel, I just got things to compile but it doesn't
>>> seem to
&g
On 04/04/2009, at 7:08 AM, Emmanuel Onzon wrote:
> More about the update of dypgen:
In some of the changes suggested, can any functions throw an exn?
We're getting a Not_found error at the moment.. they're untraceable :)
--
john skaller
[email protected]
On 04/04/2009, at 2:36 PM, john skaller wrote:
>
>
> On 04/04/2009, at 7:08 AM, Emmanuel Onzon wrote:
>
>> More about the update of dypgen:
>
>
> In some of the changes suggested, can any functions throw an exn?
> We're getting a Not_found error at the momen
On 04/04/2009, at 2:57 PM, john skaller wrote:
After some debugging we have that this nasty horrible production action:
| OPEN SYNTAX basic_name_comma_list SEMI
@{
print_endline "OPEN SYNTAX HAS FINISHED, RETURNING RESULT TO
DYPGEN";
(0,sr,Snull)
en lost, but many are kept.
I guess somehow Dypgen is losing nonterminals that aren't reachable
from start: it emits warnings about these.
--
john skaller
[email protected]
--
__
On 04/04/2009, at 5:31 PM, john skaller wrote:
>
> On 04/04/2009, at 5:21 PM, Emmanuel Onzon wrote:
>
>>
>> John and Emmanuel, I just got things to compile but it doesn't seem
>> to work. Mind if I commit it and could you see what I did wrong?
>>
>&g
uildroot
>>> ImportError: No module named fbuildroot
>
> Are you in the felix directory? There should be a file named
> fbuildroot.py in it.
>
Python path shouldn't include the current directory. I have no idea
why this works on the Mac .. it SHOULDN'T work unless
n the problem..
Dypgen is still throwing Not_found looking up the nt_table:
OPEN SYNTAX HAS FINISHED, RETURNING RESULT TO DYPGEN
Unexpected Lookup failure in nt_table
(I added a diagnostic to all unguarded Hashtbl.find ..)
--
john skaller
[email protected]
--
e flag:
> --no-undef-nt
> otherwise an exception is thrown.
I don't understand: an exception is thrown when?
--
john skaller
[email protected]
--
__
On 04/04/2009, at 11:57 PM, john skaller wrote:
>
>
> On 04/04/2009, at 11:52 PM, Emmanuel Onzon wrote:
>
>>
>> The bug was in dypgen. The function that initializes
>> the hashtable was bugged. Somewhere it did not makes
>> a recursive call when it h
will disable some checking we'd
actually want. (Also I have no idea how to change the build system :)
--
john skaller
[email protected]
--
___
Felix-language
there, one
uses them
then doesn't know how to handle the exceptions or that the system
is secretly doing things.
By the way .. the bug is now fixed, everything is building :)
--
john skaller
[email protected]
On 05/04/2009, at 12:26 AM, Emmanuel Onzon wrote:
>
>
> 2009/4/4 Emmanuel Onzon
> 2009/4/4 john skaller
>
>
> On 05/04/2009, at 12:09 AM, Emmanuel Onzon wrote:
>
>
> Dyp.Undefined_nt("comma")
>
> PARSE ERROR
> Unknown exception Parsing File
>
gmp-0.flx
>
Yep, that looks right at this point.. unfortunately I decided to clean
everything and reload
and now the configure is crashing (Erick mentioned he committed the
wrong branch
or something ..
On 05/04/2009, at 12:57 AM, Emmanuel Onzon wrote:
>
>
> 2009/4/4 john skaller
[]
> Ok. But note that the non terminals detected by the warnings
> are not thrown away by dypgen.
>
> %keep strue
>
> would just prevents dypgen from emitting a warning.
Yes, but they C
On 05/04/2009, at 12:57 AM, Emmanuel Onzon wrote:
>
> The build system is now doing this:
> [...]
> checking build/test/regress/rt/rt-1.01.30-0: ok
> * build/bin/flx.py --test=build: build/test/regress/rt/
> rt-1.01.31-0.flx -> build/test/regress/rt/rt-1.01.31-0.so
> checking build/test
missing them so, here's one for
him to enjoy on the weekend :->
--
john skaller
[email protected]
--
___
Felix-language mailing list
Felix-language@lists.
ays beats a declaration, even if the actual declaration
was parsed by a brand new production.
At one stage, I passed the age up, so this wouldn't happen, but that
doesn't work either ***
So actually the Felix grammar needs a way to group things with
"psuedo-non
hen syntaxB, you don't have the same behaviour of the
> parser than when importing syntaxB and then syntaxA.
--
john skaller
[email protected]
--
__
er or early desugaring stuff
(the parser is nice because the user can then invent new mutators).
--
john skaller
[email protected]
--
___
Felix-language mailing list
nction or procedure value isn't re-entrant.
The right solution is to clone "every time" unless it can be proven
that an invocation will terminate before another starts. Unfortunately
that can be hard to do, resulting in higher cost of func
On 06/04/2009, at 3:51 PM, Erick Tryzelaar wrote:
>> git clone [email protected]:felix
U also need to say:
git submodule update --init
to get ocs, tre etc ..
--
john skaller
[email protected]
Some mix of those giving visual strength
to the language reader, and those allowing better optimsations.
"purity" doesn't help with optimisations in Felix because Felix can
calculate if a function is pure or not anyhow (and does).
--
john skaller
[email protected]
On 06/04/2009, at 4:28 PM, Erick Tryzelaar wrote:
>
> Sorry about that. Which version of git do you have?
1.6.0
--
john skaller
[email protected]
--
___
version:
impure f_impure(g:int->int %impure) => g 1;
[If the constraint propagates as a variable there's not much point
having it, at least for human read
er implemented).
And there's no proper distinction between object pointer and the
more general kind C has which can be incremented (pointers
into arrays).
Anyhow, interesting reading..
--
john skaller
[email protected]
ever the else branch
is not required (assumed to be {} as you requested).
There are some short forms of this:
if x goto y;
if x call y(..);
doesn't require the terminator for example.
Check in lib/nugram.flxh for a complete list.
--
j
yotos.org/pipermail/bitc-dev/2007-June/000920.html
Ooo .. thanks for that ref, first bit of encouragement i've seen
from the "outside" world. makes it clear though that high performance
is desired and .. documentation is manda
caml 3.11. Would this cause issues for anyone, assuming that I make
> sure we compile and run on all our platforms?
Well I don't have Ocaml 3.11, I'd have to build it I suppose.
--
john skaller
[email protected]
y works if it can be instantiated with concrete terms
and then reduced, reduction with polymorphic terms
will usually fail.
--
john skaller
[email protected]
--
Crystal Reports - New Free Runtime and 30 Day
On 21/05/2009, at 12:26 AM, john skaller wrote:
> There is a problem in Felix with constraint propagation .. well the
> problem is that constraints are NOT propagated.
I have no implemented some basic constraint propagation.
It is intended to be enough to handle typesets of primitive
On 25/05/2009, at 12:58 PM, john skaller wrote:
>
> On 21/05/2009, at 12:26 AM, john skaller wrote:
>
>> There is a problem in Felix with constraint propagation .. well the
>> problem is that constraints are NOT propagated.
>
> I have no implemented some basic cons
y to
implement one is a Python script that grabs some text, saves it
to a file, runs Felix on that file, then grabs more text, adds it
to the end of the file, and does it all again.
In fact, such a script has been written by me using TkInter,
it should still be in the repository, bu
On 27/05/2009, at 1:29 PM, Erick Tryzelaar wrote:
> On Tue, May 26, 2009 at 7:17 PM, john skaller
> wrote:
>>
>> How would this be used without a line editor?
>> As it is, I haven't got line editing in Python and it sucks.
>
> I'm using a program called
On 27/05/2009, at 1:29 PM, Erick Tryzelaar wrote:
>
> Yeah, that's something that I'll need to be careful of. I'm not sure
> how we'll be able to do things like roll back a symbol if there's a
> type error.
Well, if you get an error binding symbol 9876 yo
ds of felix, and good
> preparation for that llvm backend I've been dreaming about :)
if you learn the innard of Felix .. teach me them!
Just cause I wrote a lot of it doesn't mean I understand it.
Some of the repr
t; algorithm, but that just
identifies a duplication, instead of ensuring no
duplication. This really matters a LOT for structural
types like tuples.
--
john skaller
[email protected]
--
Register Now for Creati
On 30/05/2009, at 11:28 PM, john skaller wrote:
> For example consider:
>
> fun f[u,t] (x: &u, y&t)=> y,x;
>
> Felix handles this function now for each type,
> generating duplicate code for each instance.
A sufficient condition for a function to be RT polym
annot determine types. It can check for expressions vs
statements however (felix has no expression-as-statement
like C). Still, Dypgen should handle this easily.
--
john skaller
[email protected]
--
Register No
t assignment is simply delegated to C.
--
john skaller
[email protected]
--
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-fr
s is already an error, just not a type error.
However this is OK:
var x = 1,2,3;
x.(0) = 99;
as it should be, because x is a variable.
--
john skaller
[email protected]
--
Crystal R
ype checked, nothing else. Try this:
1 = 2;
It fails at C stage.
--
john skaller
[email protected]
--
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option
&x <- y;
Assignment still works at the moment, but it's a hack.
but we're back to the old problem: what can you
put & in front of?
the answer is: a variable. nothing else.
--
john skaller
[email protected]
-
On 19/06/2009, at 5:00 PM, john skaller wrote:
>
> On 19/06/2009, at 4:24 PM, Erick Tryzelaar wrote:
>
>>> There is a language (forget the name, something C like) which
>>> specialises in pointer "kinds".
>>
>>
>> I believe you're think
the changes again .. it's not really that much).
--
john skaller
[email protected]
--
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two d
On 22/06/2009, at 1:15 AM, john skaller wrote:
> I have solved this problem as follows, the commit got stuffed up
> because I
> still haven't figured out how to get git to re-download files when i
> mess up.
> So I've lost the changes and will have to do them again. Th
Some fun with varray tests, tried this:
var b = varray[int] 20ul;
println$ len b;
iter println of (int) b;
b+= 22;
b+= 33;
iter println of (int) b;
c:= map (curry sub of (int * int) 100) b;
println c;
///
and it worked!
varray(78, 67)
--
john skaller
[email protected]
On 24/06/2009, at 12:23 PM, Erick Tryzelaar wrote:
> On Tue, Jun 23, 2009 at 7:16 PM, john
> skaller wrote:
>> Some fun with varray tests, tried this:
>>
>> var b = varray[int] 20ul;
>> println$ len b;
>>
>> iter println of (int) b;
>> b+= 22
will avoid copying in the
way I described if possible.
--
john skaller
[email protected]
--
___
Felix-language mailing list
[email protected]
uence.
But we can't. Sequence is a class derived from Container,
but it isn't an instance, so a defining function would clash
with Container's iter instead of instantiating it.
--
john skaller
[email protected]
-
On 26/06/2009, at 9:36 PM, john skaller wrote:
> I don't like the STL iterator stuff much for Felix. So we have this
> little
> problem:
Just some notes: example: we can do this (which Haskell cannot):
typeclass A[T] {
virtual fun f: T -> T;
}
typeclass B[T]
7;t actually "infinite" so much as
the fact that they have no end. Felix schannels are streams:
there's no end, the producer/consumer pair simply dies
when there's nothing left to say. In C++ throwing an exception
woul
or whatever. In C++
you just call
container.begin()
Of course this is only "textually polyadic".
--
john skaller
[email protected]
--
___
Felix-language mailin
designed to compile a subset of Ocaml
"as written" without changes.
--
john skaller
[email protected]
--
___
Felix-language mailing list
Felix-language
1 - 100 of 1635 matches
Mail list logo