
Hello, I have been reading work done at Rice University: http://habanero.rice.edu/cnc. Some work has been done by http://www.cs.rice.edu/~dmp4866/ on CnC for .Net. One component that David wrote a CnC translator that translates CnC textual form to the underlying language, e.g. F#. Is anybody working on a CnC textual form translator for Haskell so a Haskell user of CnC Haskell can write in a higher level?? Thanks, Vasili

vigalchin:
Hello,
I have been reading work done at Rice University: http:// habanero.rice.edu/cnc. Some work has been done by http://www.cs.rice.edu/ ~dmp4866/ on CnC for .Net. One component that David wrote a CnC translator that translates CnC textual form to the underlying language, e.g. F#. Is anybody working on a CnC textual form translator for Haskell so a Haskell user of CnC Haskell can write in a higher level??
Ah, so a translator from high level CnC form to this: http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/html/Inte... ? Do you have a reference for the "CnC textual form"? -- Don

On Wed, Jun 23, 2010 at 3:47 PM, Don Stewart
Hello,
I have been reading work done at Rice University: http:// habanero.rice.edu/cnc. Some work has been done by http://www.cs.rice.edu/ ~dmp4866/ on CnC for .Net. One component that David wrote a CnC
vigalchin: translator that
translates CnC textual form to the underlying language, e.g. F#. Is anybody working on a CnC textual form translator for Haskell so a Haskell user of CnC Haskell can write in a higher level??
Ah, so by a translator from high level CnC form to this:
http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/hml/Intel...http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/html/Inte...
^^ exactly what I mean
? Do you have a reference for the "CnC textual form"?
^^ if you mean something like a context-free grammatical definition of the "CnC textual form" ,,, the answer is I haven't seen such a reference. V.
-- Don

There is a reference for the CnC grammar in the repository for the .NET implementation. http://github.com/dmpots/CnC.NET/blob/master/CnC.NET/CnC.NET/cnc.grammar The parser specification for fsyacc (the F# YACC implementation) is here: http://github.com/dmpots/CnC.NET/blob/master/CnC.NET/CnC.NET/Parser.fsy The textual representation is still in flux a bit, but this grammar should be enough of a guide for implementing a parser in Haskell. The grammar is left recursive, so using a parser generator like Happy would be a good choice. The textual representation will actually be a bit different depending on the underlying language since the types of items stored in a collection is part of the description. For example in C, an item collection that stores an array of ints would be declared like: [int* A]; but in Haskell we would want to write something like [Array Int Int A]; I think dealing with type declarations would in the textual representation would be the main difference in implementing the parser in Haskell. Once the textual representation has been parsed to an AST it should be possible to generate the Haskell code that builds the graph using the haskell-cnc package. -David On Jun 23, 2010, at 3:56 PM, Vasili I. Galchin wrote:
On Wed, Jun 23, 2010 at 3:47 PM, Don Stewart
wrote: vigalchin: Hello,
I have been reading work done at Rice University: http:// habanero.rice.edu/cnc. Some work has been done by http://www.cs.rice.edu/ ~dmp4866/ on CnC for .Net. One component that David wrote a CnC translator that translates CnC textual form to the underlying language, e.g. F#. Is anybody working on a CnC textual form translator for Haskell so a Haskell user of CnC Haskell can write in a higher level??
Ah, so by a translator from high level CnC form to this:
http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/hml/Intel...
^^ exactly what I mean
? Do you have a reference for the "CnC textual form"? ^^ if you mean something like a context-free grammatical definition of the "CnC textual form" ,,, the answer is I haven't seen such a reference.
V.
-- Don
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Belated update:
The haskell-cnc distribution (if you grab it from darcs) now has a front-end
that parses the graph description files.
http://hackage.haskell.org/package/haskell-cnc
For any readers who haven't seen this before -- CnC is a parallel
programming model that includes both a library and a small DSL for graph
specification. The specification file describes the structure of an
application and captures various invariants about data access.
The CnC front-end in the haskell-cnc distro is meant to replace existing CnC
spec "translators" and generate code for all host languages that support the
programming model (currently C++, Java, .NET, Haskell). Also the graph
specification language is getting a refresh in the process (new
features/syntax). The parser is done with Happy. What's there right now
only generates C++ code, but the Haskell codegen is straightforward and
should come along shortly (anyone want to help?).
The purpose of such a front-end is to generate code that:
(1) saves boilerplate in graph construction (more of a problem in
non-haskell languages)
(2) correctness: enforces invariants expressed in the specification
(3) performance: generate code that embodies graph analysis and
optimizations (based also on profiling data)
Cheers,
-Ryan
On Fri, Jun 25, 2010 at 11:02 AM, David Peixotto
There is a reference for the CnC grammar in the repository for the .NET implementation.
http://github.com/dmpots/CnC.NET/blob/master/CnC.NET/CnC.NET/cnc.grammar
The parser specification for fsyacc (the F# YACC implementation) is here:
http://github.com/dmpots/CnC.NET/blob/master/CnC.NET/CnC.NET/Parser.fsy
The textual representation is still in flux a bit, but this grammar should be enough of a guide for implementing a parser in Haskell. The grammar is left recursive, so using a parser generator like Happy would be a good choice.
The textual representation will actually be a bit different depending on the underlying language since the types of items stored in a collection is part of the description. For example in C, an item collection that stores an array of ints would be declared like:
[int* A];
but in Haskell we would want to write something like
[Array Int Int A];
I think dealing with type declarations would in the textual representation would be the main difference in implementing the parser in Haskell. Once the textual representation has been parsed to an AST it should be possible to generate the Haskell code that builds the graph using the haskell-cnc package.
-David
On Jun 23, 2010, at 3:56 PM, Vasili I. Galchin wrote:
On Wed, Jun 23, 2010 at 3:47 PM, Don Stewart
wrote: Hello,
I have been reading work done at Rice University: http:// habanero.rice.edu/cnc. Some work has been done by http://www.cs.rice.edu/ ~dmp4866/ on CnC for .Net. One component that David wrote a CnC
vigalchin: translator that
translates CnC textual form to the underlying language, e.g. F#. Is anybody working on a CnC textual form translator for Haskell so a Haskell user of CnC Haskell can write in a higher level??
Ah, so by a translator from high level CnC form to this:
http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/hml/Intel...http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/html/Inte...
^^ exactly what I mean
? Do you have a reference for the "CnC textual form"?
^^ if you mean something like a context-free grammatical definition of the "CnC textual form" ,,, the answer is I haven't seen such a reference.
V.
-- Don
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Hi Ryan,
I see the "generated" C++ but where is the CnC front-end code?
Regards,
Vasili
On Thu, Sep 2, 2010 at 7:23 PM, Ryan Newton
Belated update:
The haskell-cnc distribution (if you grab it from darcs) now has a front-end that parses the graph description files. http://hackage.haskell.org/package/haskell-cnc
For any readers who haven't seen this before -- CnC is a parallel programming model that includes both a library and a small DSL for graph specification. The specification file describes the structure of an application and captures various invariants about data access.
The CnC front-end in the haskell-cnc distro is meant to replace existing CnC spec "translators" and generate code for all host languages that support the programming model (currently C++, Java, .NET, Haskell). Also the graph specification language is getting a refresh in the process (new features/syntax). The parser is done with Happy. What's there right now only generates C++ code, but the Haskell codegen is straightforward and should come along shortly (anyone want to help?).
The purpose of such a front-end is to generate code that: (1) saves boilerplate in graph construction (more of a problem in non-haskell languages) (2) correctness: enforces invariants expressed in the specification (3) performance: generate code that embodies graph analysis and optimizations (based also on profiling data)
Cheers, -Ryan
On Fri, Jun 25, 2010 at 11:02 AM, David Peixotto
wrote: There is a reference for the CnC grammar in the repository for the .NET implementation.
http://github.com/dmpots/CnC.NET/blob/master/CnC.NET/CnC.NET/cnc.grammar
The parser specification for fsyacc (the F# YACC implementation) is here:
http://github.com/dmpots/CnC.NET/blob/master/CnC.NET/CnC.NET/Parser.fsy
The textual representation is still in flux a bit, but this grammar should be enough of a guide for implementing a parser in Haskell. The grammar is left recursive, so using a parser generator like Happy would be a good choice.
The textual representation will actually be a bit different depending on the underlying language since the types of items stored in a collection is part of the description. For example in C, an item collection that stores an array of ints would be declared like:
[int* A];
but in Haskell we would want to write something like
[Array Int Int A];
I think dealing with type declarations would in the textual representation would be the main difference in implementing the parser in Haskell. Once the textual representation has been parsed to an AST it should be possible to generate the Haskell code that builds the graph using the haskell-cnc package.
-David
On Jun 23, 2010, at 3:56 PM, Vasili I. Galchin wrote:
On Wed, Jun 23, 2010 at 3:47 PM, Don Stewart
wrote: Hello,
I have been reading work done at Rice University: http:// habanero.rice.edu/cnc. Some work has been done by http://www.cs.rice.edu/ ~dmp4866/ on CnC for .Net. One component that David wrote a CnC
vigalchin: translator that
translates CnC textual form to the underlying language, e.g. F#. Is anybody working on a CnC textual form translator for Haskell so a Haskell user of CnC Haskell can write in a higher level??
Ah, so by a translator from high level CnC form to this:
http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/hml/Intel...http://hackage.haskell.org/packages/archive/haskell-cnc/latest/doc/html/Inte...
^^ exactly what I mean
? Do you have a reference for the "CnC textual form"?
^^ if you mean something like a context-free grammatical definition of the "CnC textual form" ,,, the answer is I haven't seen such a reference.
V.
-- Don
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (4)
-
David Peixotto
-
Don Stewart
-
Ryan Newton
-
Vasili I. Galchin