Send Beginners mailing list submissions to
        beginners@haskell.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://www.haskell.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1.  How to get qualifiers into type (Rustom Mody)
   2. Re:  How to get qualifiers into type (Daniel Trstenjak)
   3. Re:  How to get qualifiers into type (Kim-Ee Yeoh)
   4. Re:  How to get qualifiers into type (Rustom Mody)
   5.  Literate Haskell - capturing output (Martin Drautzburg)
   6.  Things which predictedly change over time (Martin Drautzburg)


----------------------------------------------------------------------

Message: 1
Date: Thu, 17 Jan 2013 19:10:48 +0530
From: Rustom Mody <rustompm...@gmail.com>
Subject: [Haskell-beginners] How to get qualifiers into type
To: beginners <beginners@haskell.org>
Message-ID:
        <caj+teoe4yf1w6+6yu5detfcyhxt+rsaacfpclgwkaa3jtrl...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

I am playing around with some small graph theory problems.
[Yeah I know there are good libraries -- as I said just playing around...]

And I need to do things like

type Vertex = Ix a => a
(so that a vertex can be used to index an adjacency-list-array)

That is to say that whenever 'Vertex' appears in a type signature, the Ix
should 'float' out to the qualifier list
After a lot of nudging from the error messages  and rewriting as

type Vertex = forall a. Ix a => a
and giving options
 LANGUAGE RankNTypes, ImpredicativeTypes, LiberalTypeSynonyms

I still get all kinds of errors.  I'll report them if required. However
first of all would like to know: Is this the way to go? Is this possible?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20130117/23bc2ba8/attachment-0001.htm>

------------------------------

Message: 2
Date: Thu, 17 Jan 2013 15:53:31 +0100
From: Daniel Trstenjak <daniel.trsten...@gmail.com>
Subject: Re: [Haskell-beginners] How to get qualifiers into type
To: beginners@haskell.org
Message-ID: <20130117145331.GA29344@machine>
Content-Type: text/plain; charset=us-ascii


Hi Rustom,

On Thu, Jan 17, 2013 at 07:10:48PM +0530, Rustom Mody wrote:
> type Vertex = Ix a => a
> (so that a vertex can be used to index an adjacency-list-array)

Ix is a type class, so you can only create an instance for an existing type,
but not "rename" the type class to something else.

> That is to say that whenever 'Vertex' appears in a type signature, the Ix
> should 'float' out to the qualifier list

You add the constraint to the functions using the index:

element :: Ix a => a -> ListArray b -> b
element index array = ...


Greetings,
Daniel



------------------------------

Message: 3
Date: Thu, 17 Jan 2013 22:32:50 +0700
From: Kim-Ee Yeoh <k...@atamo.com>
Subject: Re: [Haskell-beginners] How to get qualifiers into type
To: Rustom Mody <rustompm...@gmail.com>
Cc: beginners <beginners@haskell.org>
Message-ID:
        <CAPY+ZdSbNNLyiEbJvnpJ5wZMs7_ieW=x4rusyy0onjhj6xd...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

On Thu, Jan 17, 2013 at 8:40 PM, Rustom Mody <rustompm...@gmail.com> wrote:

> And I need to do things like
>
> type Vertex = Ix a => a
> (so that a vertex can be used to index an adjacency-list-array)
>

Two things seem to be going on:

(1) you're trying to define a data type using "type" and not "data"+class
instances. Recall that the "type" declares a type /synonym/, and while type
synonyms seem to behave like CPP-style macros, they aren't.


> That is to say that whenever 'Vertex' appears in a type signature, the Ix
> should 'float' out to the qualifier list
>

(2) you're trying to save on keyboarding by using Vertex as a CPP-style
macro that expands in the "smart" way you just described. Something that
has been requested before is collapsing a list of constraints into just one
(search haskell-cafe archives and also see "No Module Abstraction" of [1]).
The larger the number of constraints, i.e. (A x) expands out to (B x, C x,
D x, ...) the greater the need for such a feature. But there's no benefit
to be gained here.

(3) you're trying to improve readability of code because "Ix a => a" isn't
explicit that type variable "a" is a vertex. Nothing stops you from writing
"Ix vertex => vertex" however. See [2].

[1] http://lukepalmer.wordpress.com/2010/03/19/haskells-big-three/
[2]
http://www.amateurtopologist.com/blog/2011/10/11/name-your-type-variables/

-- Kim-Ee
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20130117/ed3db080/attachment-0001.htm>

------------------------------

Message: 4
Date: Thu, 17 Jan 2013 22:22:32 +0530
From: Rustom Mody <rustompm...@gmail.com>
Subject: Re: [Haskell-beginners] How to get qualifiers into type
To: Kim-Ee Yeoh <k...@atamo.com>
Cc: beginners <beginners@haskell.org>
Message-ID:
        <caj+teocyefg7_yl3znljkub85pvgi47pgpxel6difm+ystp...@mail.gmail.com>
Content-Type: text/plain; charset="windows-1252"

On Thu, Jan 17, 2013 at 9:02 PM, Kim-Ee Yeoh <k...@atamo.com> wrote:

> On Thu, Jan 17, 2013 at 8:40 PM, Rustom Mody <rustompm...@gmail.com>wrote:
>
>> And I need to do things like
>>
>> type Vertex = Ix a => a
>> (so that a vertex can be used to index an adjacency-list-array)
>>
>
> Two things seem to be going on:
>
> (1) you're trying to define a data type using "type" and not "data"+class
> instances. Recall that the "type" declares a type /synonym/, and while type
> synonyms seem to behave like CPP-style macros, they aren't.
>
>
>> That is to say that whenever 'Vertex' appears in a type signature, the Ix
>> should 'float' out to the qualifier list
>>
>
> (2) you're trying to save on keyboarding by using Vertex as a CPP-style
> macro that expands in the "smart" way you just described. Something that
> has been requested before is collapsing a list of constraints into just one
> (search haskell-cafe archives and also see "No Module Abstraction" of [1]).
> The larger the number of constraints, i.e. (A x) expands out to (B x, C x,
> D x, ...) the greater the need for such a feature. But there's no benefit
> to be gained here.
>
> (3) you're trying to improve readability of code because "Ix a => a" isn't
> explicit that type variable "a" is a vertex. Nothing stops you from writing
> "Ix vertex => vertex" however. See [2].
>
> [1] http://lukepalmer.wordpress.com/2010/03/19/haskells-big-three/
>

Thanks for that link. So it seems its not possible to do what I want.

my aesthetic choice: I don?t obscure my code?s inner beauty behind
> repulsive indecipherable type signatures?
>

Vow! Thats stronger language than I am habituated to use and yes thats what
I am talking about.

And further if the type signature is already turgid and obese with
super-generic constraints, writing (... Ix vertex...) => ... instead of Ix
v just worsens it



-- 
http://www.the-magus.in
http://blog.languager.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20130117/b9026d36/attachment-0001.htm>

------------------------------

Message: 5
Date: Thu, 17 Jan 2013 20:00:43 +0100
From: Martin Drautzburg <martin.drautzb...@web.de>
Subject: [Haskell-beginners] Literate Haskell - capturing output
To: beginners@haskell.org
Message-ID: <201301172000.44039.martin.drautzb...@web.de>
Content-Type: Text/Plain;  charset="us-ascii"

Hello all,

I am using literate haskell quite a lot (otherwise I don't understand my own 
code). This works fine for the code as such. But when I give an example usage, 
I run code snippets in ghci and copy&paste into the main document/program, 
which turns them into "text" (and not code).

When I make changes to the program these examples tend to no longer reflect 
the actual program.

Is there a way to automatically run examples and include them in the .lhs 
file, preferably with the haskell prompt and everything?

-- 
Martin



------------------------------

Message: 6
Date: Thu, 17 Jan 2013 21:34:36 +0100
From: Martin Drautzburg <martin.drautzb...@web.de>
Subject: [Haskell-beginners] Things which predictedly change over time
To: beginners@haskell.org
Message-ID: <201301172134.36793.martin.drautzb...@web.de>
Content-Type: Text/Plain;  charset="us-ascii"

Hello all,

... and I thought this was easy: 

find a way to represent a "schedule", i.e. a thing which assumes different 
values at different days.

It turned out I don't know what a schedule is. What is the formalism behind 
"This train leaves at 11:00 every day except sundays (where it doesn't run at 
all), except on Easter Sunday where it leaves at 11:10"?

I do not even need to know the "most compact" representation, just some 
representation which is reasonably compact and which can be translated into 
human language.

So far I believe a Schedule is a function which takes a day and retuns a 
Value. If I had this function, I could easily list values for all days within 
given interval of days.

But the inverse should also be possible. Given a List of (Day, Value) pairs, I 
should be able to construct a Schedule.

The reason why I am interested in this is the following: 

"On every Monday I take a trip from A to C. To do so, I need to take two 
trains and change trains in B". 

So I have to consider the two train schedules to decide whether or not my 
itinerary will work. So I kind of have a Constraint which is scheduled itself 
(every Monday) and which depends on two other Schedules. The Constraint can be 
satisfied for some days and violated for others. I want to find out when it is 
violated (within a finit interval of days) without having to enumerate all 
days and check each day individually. 

And most importantly I want to specify the Constraint without referring to 
individual days, just like I did in the quoted sentence above.

You may also say, I want to lift the fine world of relational algebra to a 
world where things change over time, i.e. assume different values at different 
days.

This seems to be such a common planning problem! You face it every time you 
deal with things which are not constant over time, and it becomes a nightmare 
when you deal with relationships between them. Still I could not find anything 
useful on the net. How can the world turn at all without having this solved?



-- 
Martin



------------------------------

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners


End of Beginners Digest, Vol 55, Issue 18
*****************************************

Reply via email to