[Haskell-cafe] mistake in Gentle Introduction

2005-09-21 Thread Michael Vanier

On this page:

http://www.haskell.org/tutorial/modules.html

it refers to the process of hiding imported names from a module and gives
the example:

  import Prelude hiding length

whereas the correct syntax is

  import Prelude hiding (length)

I spent nearly an hour beating my head against this.  Can someone fix this
in the documentation?

Mike


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread Tomasz Zielonka
On Wed, Sep 21, 2005 at 12:12:16PM +0100, Immanuel Litzroth wrote:
> "Tomasz Zielonka" <[EMAIL PROTECTED]> writes:
> 
> > On Wed, Sep 21, 2005 at 08:53:47AM +0100, Immanuel Litzroth wrote:
> >> "David F. Place" <[EMAIL PROTECTED]> writes:
> >> 
> >> >I was hoping that the examples I requested would be examples of
> >> >particular control constructs or extensions to the language's syntax
> >> >and semantics.  Though I admit that such things are possible in lisp,
> >> >I suspect that their utility is minimal.
> >> 
> >> Ever heard of the loop macro?
> >> Immanuel Litzroth
> >
> > I would be nice if you could give some examples for use of LOOP macro
> > that you think would be cumbersome to translate to Haskell.
> >
> That was not the original question and I think that would lead to
> pointless discussion about the meaning of "cumbersome".  

You are right, sorry. I agree that the ability to create your own
control structures is a win. I only argue that when it's possible, it's
better to avoid using macros for this.

> Another example is UFFI, basically a bunch of macros to do platform
> independent foreign function interfaces.

Good example - laziness, HOFs and closures don't help much here.

> I a currently writing a macro to generate the functions and
> datastructures to read an ipod database. This allows me to
> declaratively say
> (defheader (header-name inherits-from) 
>(field-name length &optional reader)...).
> I doubt this would be easy in Haskell (maybe with TH it could be done) 

I am doing similar things with Haskell. The amount of TH code needed is
minimal, I prefer to put most of the machinery in the type system.

Best regards
Tomasz
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


RE: [Haskell-cafe] killing a running thread interactively

2005-09-21 Thread S. Alexander Jacobson

More particularly, is there a getAllThreadIds function somewhere?

-Ale-

On Wed, 21 Sep 2005, S. Alexander Jacobson wrote:

Is the general pattern to write all threadIds to a file, and then have a 
separate function that takes the file and kills them?


Or is there something more clever?

-Alex-

On Wed, 21 Sep 2005, Simon Marlow wrote:


On 16 September 2005 20:42, S. Alexander Jacobson wrote:


If I am running a server interactively. (using ghci).
Is there any way to kill its running threads without terminating the
interpreter?


If you can get ThreadIds for the threads, yes.  GHCi doesn't (currently)
create a new thread for each expression evaluation, so attempting to
kill that thread might kill your GHCi session (it shouldn't but that's
another story).

Cheers,
Simon

** CRM114 Whitelisted by: [EMAIL PROTECTED] **



__
S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com



__
S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


RE: [Haskell-cafe] killing a running thread interactively

2005-09-21 Thread S. Alexander Jacobson
Is the general pattern to write all threadIds to a file, and then have 
a separate function that takes the file and kills them?


Or is there something more clever?

-Alex-

On Wed, 21 Sep 2005, Simon Marlow wrote:


On 16 September 2005 20:42, S. Alexander Jacobson wrote:


If I am running a server interactively. (using ghci).
Is there any way to kill its running threads without terminating the
interpreter?


If you can get ThreadIds for the threads, yes.  GHCi doesn't (currently)
create a new thread for each expression evaluation, so attempting to
kill that thread might kill your GHCi session (it shouldn't but that's
another story).

Cheers,
Simon

** CRM114 Whitelisted by: [EMAIL PROTECTED] **



__
S. Alexander Jacobson tel:917-770-6565 http://alexjacobson.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread David F. Place


On Sep 21, 2005, at 10:58 AM, Immanuel Litzroth wrote:


I personally find loop usually the most concise way to express my
iteration requirements.



Perhaps, but with tail recursion equivalent to iteration you no  
longer have any real "requirement" to iterate.  It's a lifestyle  
choice. :-)



David F. Place
mailto:[EMAIL PROTECTED]

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Network parsing and parsec

2005-09-21 Thread Benjamin Franksen
On Wednesday 21 September 2005 20:17, John Meacham wrote:
> On Wed, Sep 21, 2005 at 12:32:56AM +0200, Benjamin Franksen wrote:
> > On Tuesday 20 September 2005 16:50, John Goerzen wrote:
> > > On the flip side, Parsec is really nice.  I wonder how easy it
> > > would be to make it parse [Word8] instead of String?
> >
> > Isn't Parsec parameterized over the token type?
> >
> > > Or even a
> > > FastPackedString? (And how easy it would be to get that instead
> > > of a String from hGetContents)?
> >
> > From the FPS haddock:
> >
> > hGetContents :: Handle -> IO FastString
> >
> >   Read entire handle contents into a FastString.
> >
> > This may or may not do what you want...it's probably not a lazy
> > read.
>
> If it can be implemented via 'mmap' then it is effectivly a lazy
> read. and _very_ efficient to boot.

True, I forgot mmap. Taking a look at the implementation reveals that it 
indeed uses mmap (if available on the platform).

Ben
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Really confused

2005-09-21 Thread Philippa Cowderoy

On Wed, 21 Sep 2005, Mark Carter wrote:


I get the idea that
data SM a = SM (S -> (a,S))
maps a state to a result, and a new state. OTOH, looking at

instance Monad SM where
-- defines state propagation
SM c1 >>= fc2 =  SM (\s0 -> let (r,s1) = c1 s0
SM c2 = fc2 r in
   c2 s1)
return k  =  SM (\s -> (k,s))

just confuses me no end.



It really broke my brain for a while too - I had to graph the thing out on 
a piece of paper before I could follow what it was doing. The return 
should be easy enough, no? In the >>= code, c is "unboxed computation", fc 
is "function yielding computation", r is "result" and s is "state" - the 
first line of the let gets the result of the first computation and the 
state after it, the second line applies fc2 to the result to get the 
second computation and then the final line applies the computation to the 
intermediate state. There's a little boxing and unboxing going on, but 
that's pretty much it.


Any pointers, like am I taking completely the wrong approach anyway? I'm also 
puzzled

as to how the initial state would be set.



You set the initial state with a "run" function, like so:

runSM (SM f) initialState = f initialState

The result will be a tuple: (result, finalState)

--
[EMAIL PROTECTED]

The task of the academic is not to scale great 
intellectual mountains, but to flatten them.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Network parsing and parsec

2005-09-21 Thread John Meacham
On Wed, Sep 21, 2005 at 12:32:56AM +0200, Benjamin Franksen wrote:
> On Tuesday 20 September 2005 16:50, John Goerzen wrote:
> > On the flip side, Parsec is really nice.  I wonder how easy it would
> > be to make it parse [Word8] instead of String?  
> 
> Isn't Parsec parameterized over the token type?
> 
> > Or even a 
> > FastPackedString? (And how easy it would be to get that instead of a
> > String from hGetContents)?
> 
> From the FPS haddock:
> 
> hGetContents :: Handle -> IO FastString
> 
>   Read entire handle contents into a FastString.
> 
> This may or may not do what you want...it's probably not a lazy read.

If it can be implemented via 'mmap' then it is effectivly a lazy read.
and _very_ efficient to boot.
John

-- 
John Meacham - ⑆repetae.net⑆john⑈ 
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Really confused

2005-09-21 Thread Mark Carter



I'm trying to define a type called Stream. For now, assume that that the 
type has
3 fields: uid, x, y. X and y represent a point in space that a stream 
occupies, and
uid is a unique identifier for the stream. The uid should be 
"auto-generated". It's
important that streams have an identity so that they can be referred to 
and manipulated.

Streams will
be put together into a list, and they'll eventually need to be able to 
point to one

another. It would be nice to be able to print the  uid, just to show that it
works.

Now it occured to me that what one might want to generate the uids is a 
monad, let's
call it UID. It'll have a function get, which returns another 
identifier. I assumed that
the best solution for the problem would be in terms of monads, because 
successive
calls to get return different results; i.e. there's a bit of state going 
on inside. The

values returned can start from 1, and increment by 1 each time.

I had a look at some documentation at:
http://www.haskell.org/tutorial/monads.html
and I'm afraid my brain just froze.

I get the idea that
data SM a = SM (S -> (a,S))
maps a state to a result, and a new state. OTOH, looking at

instance Monad SM where
 -- defines state propagation
 SM c1 >>= fc2 =  SM (\s0 -> let (r,s1) = c1 s0
 SM c2 = fc2 r in
c2 s1)
 return k  =  SM (\s -> (k,s))

just confuses me no end.

Any pointers, like am I taking completely the wrong approach anyway? I'm 
also puzzled

as to how the initial state would be set.




___ 
Yahoo! Messenger - NEW crystal clear PC to PC calling worldwide with voicemail http://uk.messenger.yahoo.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Network parsing and parsec

2005-09-21 Thread Benjamin Franksen
On Wednesday 21 September 2005 19:36, Jan-Willem Maessen wrote:
> On Sep 20, 2005, at 6:32 PM, Benjamin Franksen wrote:
> > On Tuesday 20 September 2005 16:50, John Goerzen wrote:
> >> On the flip side, Parsec is really nice.  I wonder how easy it
> >> would be to make it parse [Word8] instead of String?
> >
> > Isn't Parsec parameterized over the token type?
> >
> >> Or even a
> >> FastPackedString? (And how easy it would be to get that instead of
> >> a String from hGetContents)?
> >
> > From the FPS haddock:
> >
> > hGetContents :: Handle -> IO FastString
> >
> >   Read entire handle contents into a FastString.
> >
> > This may or may not do what you want...it's probably not a lazy
> > read.
>
> It seems like there might need to be something like:
>
> hGetContentsLazily :: Handle -> IO [FastString]
>
> which returns file contents in chunks based on our ability to buffer
> the handle.  If we can mmap the handle, we may get a singleton list
> with a giant FastString; if we are using a Socket or a terminal, each
> succeeding string might be the next chunk of available data from the
> handle.

From the FPS haddock:

data LazyFile 
  Constructors
LazyString String
MMappedFastString FastString
LazyFastStrings [FastString]
  Instances
Eq LazyFile

  readFileLazily :: FilePath -> IO LazyFile

That comes pretty near. Unfortunately it works on a file name, not a 
handle. Thus it cannot be used for a socket or such things.

Ben
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: Network parsing and parsec

2005-09-21 Thread Jan-Willem Maessen


On Sep 20, 2005, at 6:32 PM, Benjamin Franksen wrote:


On Tuesday 20 September 2005 16:50, John Goerzen wrote:

On the flip side, Parsec is really nice.  I wonder how easy it would
be to make it parse [Word8] instead of String?


Isn't Parsec parameterized over the token type?


Or even a
FastPackedString? (And how easy it would be to get that instead of a
String from hGetContents)?


From the FPS haddock:

hGetContents :: Handle -> IO FastString

  Read entire handle contents into a FastString.

This may or may not do what you want...it's probably not a lazy read.


It seems like there might need to be something like:

hGetContentsLazily :: Handle -> IO [FastString]

which returns file contents in chunks based on our ability to buffer 
the handle.  If we can mmap the handle, we may get a singleton list 
with a giant FastString; if we are using a Socket or a terminal, each 
succeeding string might be the next chunk of available data from the 
handle.


I had the impression the internals of getContents from the prelude 
worked a bit like this (in GHC, anyway).


-Jan-Willem Maessen



Ben
___
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


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread Immanuel Litzroth
"David F. Place" <[EMAIL PROTECTED]> writes:

> On Sep 21, 2005, at 3:53 AM, Immanuel Litzroth wrote:
>
>> Ever heard of the loop macro?
>
> Yes, the loop macro is a good example for the argument against lisp.
> Lisp has features to support iteration that date back to the time
> before it was understood that tail recursion is equivalent to
> iteration. 
> In fact, even in the early '90s most common lisp compilers
> didn't implement tail-merging.  I doubt there is any program
> implemented using the loop macro that couldn't be more elegantly
> implemented recursively.  
> In fact, when writing in lisp or scheme, I
> always write recursively now that I can depend on compilers to tail-
> merge.

I personally find loop usually the most concise way to express my
iteration requirements.  
Immanuel

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


RE: [Haskell-cafe] killing a running thread interactively

2005-09-21 Thread Simon Marlow
On 16 September 2005 20:42, S. Alexander Jacobson wrote:

> If I am running a server interactively. (using ghci).
> Is there any way to kill its running threads without terminating the
> interpreter?

If you can get ThreadIds for the threads, yes.  GHCi doesn't (currently)
create a new thread for each expression evaluation, so attempting to
kill that thread might kill your GHCi session (it shouldn't but that's
another story).

Cheers,
Simon
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Haskell-style proof tools?

2005-09-21 Thread Sven Moritz Hallberg
Robin Green schrieb:
> Does anyone know of a prover / proof assistant / proof verifier which uses a 
> vaguely Haskell-like syntax? That is to say, it allows you to express 
> theorems in Haskell-style syntax, print proof steps in Haskell-style syntax, 
> etc.

Hi Robin,

As part of a seminar, I'm currently working with Isabelle/HOL

http://isabelle.in.tum.de/

to prove correctness of a function originally written in Haskell.
Isabelle/HOL supports a functional programming style very close to
Haskell (NB Isabelle itself is written in ML).

I'm not done yet, but I hope to make this work into a little "A
real-life example of program verification with Isabelle/HOL" paper.

As I said, it's not finished yet (by far), but I've got the termination
proof along with a couple of lemmas. I'll put the current state on the
web so you can have a look:


http://scannedinavian.org/~pesco/code/transpose/Transpose.thy
This is the theory file containing the Isabelle definitions and proofs.

http://scannedinavian.org/~pesco/code/transpose/transpose.lhs
This is the original literal Haskell module. It contains the Haskell
function and a quick informal proof.


HTH,
Sven Moritz
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread David F. Place


On Sep 21, 2005, at 3:53 AM, Immanuel Litzroth wrote:


Ever heard of the loop macro?


Yes, the loop macro is a good example for the argument against lisp.   
Lisp has features to support iteration that date back to the time  
before it was understood that tail recursion is equivalent to  
iteration. In fact, even in the early '90s most common lisp compilers  
didn't implement tail-merging.  I doubt there is any program  
implemented using the loop macro that couldn't be more elegantly  
implemented recursively.  In fact, when writing in lisp or scheme, I  
always write recursively now that I can depend on compilers to tail- 
merge.




David F. Place
mailto:[EMAIL PROTECTED]

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread Glynn Clements

David F. Place wrote:

> I don't deny that all of the things you mentioned are wonderful  
> indeed.  I just wonder if they really could only be done in lisp or  
> even most conveniently.

Obviously, if you can do it in Lisp, you can do it in any
Turing-complete language; in the worst case, you just write a Lisp
interpreter.

As for convenience: syntax matters. The equivalence of code and data
in Lisp lets you write your own syntactic sugar. You're still bound by
the lexical (token-level) grammar, although reader macros mean that
isn't much of a restriction.

-- 
Glynn Clements <[EMAIL PROTECTED]>
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread Immanuel Litzroth
"Tomasz Zielonka" <[EMAIL PROTECTED]> writes:

> On Wed, Sep 21, 2005 at 08:53:47AM +0100, Immanuel Litzroth wrote:
>> "David F. Place" <[EMAIL PROTECTED]> writes:
>> 
>> >I was hoping that the examples I requested would be examples of
>> >particular control constructs or extensions to the language's syntax
>> >and semantics.  Though I admit that such things are possible in lisp,
>> >I suspect that their utility is minimal.
>> 
>> Ever heard of the loop macro?
>> Immanuel Litzroth
>
> I would be nice if you could give some examples for use of LOOP macro
> that you think would be cumbersome to translate to Haskell.
>
That was not the original question and I think that would lead to
pointless discussion about the meaning of "cumbersome".  
Loop is an example of a control construct that can be implemented by a macro.
One can can discuss it's utility, but it was deemed important enough to be
standardized (by lisp people). It was only one of the macros developed
at that time to do things sequencelike things (series, generators/gatherers were
others) .
Another example is UFFI, basically a bunch of macros to do platform
independent foreign function interfaces.
I a currently writing a macro to generate the functions and
datastructures to read an ipod database. This allows me to
declaratively say
(defheader (header-name inherits-from) 
   (field-name length &optional reader)...).
I doubt this would be easy in Haskell (maybe with TH it could be done) 
since I build a list of (header-name . (field-names ...)) at compile
time which is then used to generate code that locally binds these 
to the result of reading them so that readers can refer to fields
already read e.g.
(let* ((field-name (reader stream)))
  ((field-name2 (reader field-name1 stream))

Immanuel

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Basic type classing question.

2005-09-21 Thread Ketil Malde
Karl Grapone <[EMAIL PROTECTED]> writes:

> I've just started learning Haskell, and I must admit I'm finding it a
> bit hard to get my head around the typing system...

Okay.

> What I want to be able to do is add and remove fields while the system
> is running,

While I'm sure you'll get some advanced replies to this, IMHO there is
a contradiction between static (ie. compile time) type safety, and
run-time modification of the types.

If you are happy with dynamic typing, I would encode the data fields
as lists of (keyword,value) pairs, and insert the necessary checks
where appropriate.  I.e. something like:

  type Keyword = String  -- alternative: data Keyword = Name | Address |..
  type Value = String-- or: data KeyVal = Name String | Number Int |..

  data Employee = E [(Keyword,Value)]
  data Department = D [(Keyword,Value)]

You can easily look up and update the field lists by using standard
Prelude funcitions.

-k
-- 
If I haven't seen further, it is by standing in the footprints of giants

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Trapped by the Monads

2005-09-21 Thread Ketil Malde
Bill Wood <[EMAIL PROTECTED]> writes:

>> The variable mem is a so-called hybrid variable; it crunches
>> together 2 different concepts: a boolean value (could I allocate
>> memory?) and an address value (what is the address where I can find
>> my allocated memory).

IMO, Maybe is exactly the oppsite, it extends a data type with a NULL
value (to use DB terminology), and leaves no opportunity for confusing
the extended type with the original.

> I mostly agree with the "tightening-up", but there are times when I
> really miss the nil hacks :-)

In Haskell as well?  I alwasy felt the cost of inserting a "null"
predicate (when I want to test for an empty list) to be low.

-k
-- 
If I haven't seen further, it is by standing in the footprints of giants

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Basic type classing question.

2005-09-21 Thread Marc Ziegert
maybe, i completely missunderstand you. please, could you program your example 
in another language than haskell, one you know better?
i'm not sure -- did you try to define variables instead of types?

data Employee = Emp
data Department = Dept
translated to c++ this means sth like
typedef void Employee;
typedef void Department;

did you want sth like ...?
data Employee = Emp [(String,Either String Int)]
emp1 :: Employee
emp1=Emp [("Name",Left "Karl Ranseier"),("Identifier",Right 7),("Address",Left 
"Graveyard 13")]

-marc


Karl Grapone wrote:
> Hi,
> 
> I've just started learning Haskell, and I must admit I'm finding it a
> bit hard to get my head around the typing system...
> 
> If I wanted to represent Employees and Departments in a Haskell
> program I could use data declarations like so:
> data Employee = Emp ...
> data Department = Dept ...
> 
> This seems limited in (at least) two ways:
> I can't dynamically add fields to an employee or department, and
> once I pull a field out of an instance I lose type information.
> 
> 
> What I want to be able to do is add and remove fields while the system
> is running, I suppose via hs-plugins, and I should be prevented from,
> for example, accidentally taking an employees first name and using it
> as a departments address.
> 
> My first attempt was the following, which isn't even valid and doesn't
> appear to buy me much anyway.
> 
> class DataContainer c
> 
> class DataContainer c => DataField f c a where
>   extract :: f -> a
>   apply :: (a -> a -> a) -> f -> f -> f
> 
> data DataContainer c => Field c a = Fld c a
> instance DataField Field c a where
>   extract (Fld _ a) = a
>   apply f (Fld c a1) (Fld _ a2) = Fld c (f a1 a2)
> 
> 
> data Employee = Emp
> instance DataContainer Employee
> 
> data Department = Dept
> instance DataContainer Department
> 
> type EmployeeName = Field Employee String
> type EmployeeAddress = Field Employee String
> type EmployeeIdentifier = Field Employee Integer
> type DepartmentAddress = Field Department String
> type DepartmentIdentifier = Field Department Integer
> ...
> 
> 
> The 'DataField instance Field' declaration gives kind errors regarding
> how many type arguments Field is applied to.  I don't claim to
> understand kinds at this point.
> Even if it did work, apply doesn't appear to force the arguments to be
> of the same type, and the declared type synonyms aren't enough to
> prevent me getting employee names and addresses confused.
> 
> Is there a correct way to express what I'm trying to do?  Or is it a
> bad idea to start with?
> 
> Thanks
> Karl
> ___
> 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


Re: [Haskell-cafe] Haskell-style proof tools?

2005-09-21 Thread Radu Grigore
On 9/21/05, Robin Green <[EMAIL PROTECTED]> wrote:
> Does anyone know of a prover / proof assistant / proof verifier which uses a
> vaguely Haskell-like syntax? That is to say, it allows you to express
> theorems in Haskell-style syntax, print proof steps in Haskell-style syntax,
> etc.

Skimming through the Haskell report reveals links that seem promising:
http://www.cs.chalmers.se/~catarina/agda/
http://www.haskell.org/yarrow/

And maybe:
http://www.ittc.ku.edu/~wardj/prufrock/

--
regards,
  radu
http://rgrig.blogspot.com/
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread Tomasz Zielonka
On Wed, Sep 21, 2005 at 08:53:47AM +0100, Immanuel Litzroth wrote:
> "David F. Place" <[EMAIL PROTECTED]> writes:
> 
> >I was hoping that the examples I requested would be examples of
> >particular control constructs or extensions to the language's syntax
> >and semantics.  Though I admit that such things are possible in lisp,
> >I suspect that their utility is minimal.
> 
> Ever heard of the loop macro?
> Immanuel Litzroth

I would be nice if you could give some examples for use of LOOP macro
that you think would be cumbersome to translate to Haskell.

Best regards
Tomasz
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Haskell-style proof tools?

2005-09-21 Thread Robin Green
Does anyone know of a prover / proof assistant / proof verifier which uses a 
vaguely Haskell-like syntax? That is to say, it allows you to express 
theorems in Haskell-style syntax, print proof steps in Haskell-style syntax, 
etc.

-- 
Robin
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell] Re: [Haskell-cafe] Haskell versus Lisp

2005-09-21 Thread Immanuel Litzroth
"David F. Place" <[EMAIL PROTECTED]> writes:

>I was hoping that the examples I requested would be examples of
>particular control constructs or extensions to the language's syntax
>and semantics.  Though I admit that such things are possible in lisp,
>I suspect that their utility is minimal.

Ever heard of the loop macro?
Immanuel Litzroth

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe