Keith Wansbrough <[EMAIL PROTECTED]> wrote in article <[EMAIL PROTECTED]> in
gmane.comp.lang.haskell.general:
> module TypedFM where
>data FM k -- Abstract; finite map indexed bykeys of type k
>data Key k a -- Abstract; a key of type k, indexing a value of type a
>
>
> Yes, that's a good point. So there are really three issues:
> a) single-threaded-ness
> b) making sure you look up in the right map
> c) making sure the thing you find has the right type
>
> Even if you have typed keys, (Key a), then if you look them up in the
> wrong map
| If you use Simon PJ's type signatures, you can't really disallow using
| a key from one map with another map.
Yes, that's a good point. So there are really three issues:
a) single-threaded-ness
b) making sure you look up in the right map
c) making sure the thing you fi
Keith Wansbrough <[EMAIL PROTECTED]> writes:
> > In article <[EMAIL PROTECTED]>,
> > [EMAIL PROTECTED] (Carl R. Witty) wrote:
> >
> > > Here's a hand-waving argument that you need either Typeable (or
> > > something else that has a run-time concrete representation of types)
> > > or ST/STRef (or
> In article <[EMAIL PROTECTED]>,
> [EMAIL PROTECTED] (Carl R. Witty) wrote:
>
> > Here's a hand-waving argument that you need either Typeable (or
> > something else that has a run-time concrete representation of types)
> > or ST/STRef (or something else, probably monadic, that can track
> > uniq
In article <[EMAIL PROTECTED]>,
[EMAIL PROTECTED] (Carl R. Witty) wrote:
> Here's a hand-waving argument that you need either Typeable (or
> something else that has a run-time concrete representation of types)
> or ST/STRef (or something else, probably monadic, that can track
> unique objects) to
"Simon Peyton-Jones" <[EMAIL PROTECTED]> writes:
> | Conjecture: It's impossible to implement RefMonad directly in Haskell
> | without making use of built-in ST or IO functionality and without
> unsafe or
> | potentially diverging code (such as unsafeCoerce).
>
> A more concrete way to formulate
On Wed, 11 Jun 2003 09:19:46 +0200 (MET DST)
Koen Claessen <[EMAIL PROTECTED]> wrote:
> Derek Elkins wrote:
>
> | The question (at least to me) is more, 'you can
> | satisfy the RefMonad interface with STRefs or IORefs,
> | but those use "imperative" features under the hood;
> | can it be sat
Someone asked me:
| I don't recall the message you are referring to, and I
| can't find it in the archive. Can you point me at it?
Sorry, I meant:
http://www.haskell.org/pipermail/haskell/2001-September/007922.html
/K :-)
___
Haskell mailing list
Derek Elkins wrote:
| The question (at least to me) is more, 'you can
| satisfy the RefMonad interface with STRefs or IORefs,
| but those use "imperative" features under the hood;
| can it be satisfied without them?'
As I showed in the message that spawned off this discussion,
this is indeed
On Tue, 10 Jun 2003 11:44:45 -0700 (PDT)
[EMAIL PROTECTED] wrote:
>
> > update :: (Typable b) => FM k -> Key k a -> b -> (FM ...)
>
> I didn't know constraints on values are allowed... Given below is the
> implementation of the required interface, in Haskell98
They aren't presumably as that wo
> update :: (Typable b) => FM k -> Key k a -> b -> (FM ...)
I didn't know constraints on values are allowed... Given below is the
implementation of the required interface, in Haskell98
module TypedFM where
data FM k -- Abstract; finite map indexed bykeys of type k
data Ke
Simon Marlow wrote:
Simon P.J. writes:
... So it's reasonable that there should be some language extension.
I'm just looking for the minimal such extension.
unsafeCoerce# is quite a minimal extension :-)
It's a minimal extension, but it's not an extension that provides any
insight. :)
Simon P.J. writes:
> ... So it's reasonable that there should be some language extension.
> I'm just looking for the minimal such extension.
unsafeCoerce# is quite a minimal extension :-)
Cheers,
Simon
___
Haskell mailing list
[EMAIL PROTECTE
Ralf Hinze writes:
> Why is that? Ok, here is my second implementation. It uses the
> Dynamic module from our HW2002 paper. A key is a pair consisting
> of the actual key and a type representation.
[..]
> > update:: (Typable b) => FM k -> Key k a -> b -> (FM k, Key
> > k
In fact I think these Typesafe MRef's are exactly equivalent
to dynamic types. In other words, if you've got one,
you've got the other. Ralf Hinze has just shown that
if you have dynamic types you can implement Typesafe MRef.
The reverse implementation would be something like
> data Dynamic = FM
Am Freitag, 6. Juni 2003 16:09 schrieb Simon Peyton-Jones:
> You can't overwrite an entry with a value of a different type, because
> the keys are typed! Any more than you can overwrite an IORef with a
> value of a different type.
> S
Why is that? Ok, here is my second implementation. It uses the
Jones; Tim Sweeney; [EMAIL PROTECTED]; Ashley
Yakeley
| Subject: Re: Typesafe MRef with a regular monad
|
| Am Freitag, 6. Juni 2003 15:47 schrieb Simon Peyton-Jones:
| > Yes, one *could* use dynamic types. But the check would always
succeed!
|
| Why is that? If I overwrite an entry with a va
Am Freitag, 6. Juni 2003 15:47 schrieb Simon Peyton-Jones:
> Yes, one *could* use dynamic types. But the check would always succeed!
Why is that? If I overwrite an entry with a value of a different type,
then the check fails. I am certainly missing something ...
Cheers, Ralf
___
for the minimal such extension. Finite maps see a bit of a big
hammer.
Simon
| -Original Message-
| From: Ralf Hinze [mailto:[EMAIL PROTECTED]
| Sent: 06 June 2003 14:29
| To: Simon Peyton-Jones; Tim Sweeney; [EMAIL PROTECTED]; Ashley
Yakeley
| Subject: Re: Typesafe MRef with a regula
Am Freitag, 6. Juni 2003 15:23 schrieb Simon Peyton-Jones:
> Oh bother, I forgot to add that you can of course insert a new value
> with an old key (suitably typed) and have it overwrite. Else, as you
> say, there would not be much point.
>
> Maybe it'd be better to have a separate key-constructio
f having insert return a key.
S
| -Original Message-
| From: Ralf Hinze [mailto:[EMAIL PROTECTED]
| Sent: 06 June 2003 14:12
| To: Simon Peyton-Jones; Tim Sweeney; [EMAIL PROTECTED]; Ashley
Yakeley
| Subject: Re: Typesafe MRef with a regular monad
|
| > A more concrete way to formulat
> A more concrete way to formulate a problem that I believe to be
> equivalent is this. Implement the following interface
>
>module TypedFM where
> data FM k -- Abstract; finite map indexed by keys
> of type k
> data Key k a-- Abstract; a key of type k, in
| Conjecture: It's impossible to implement RefMonad directly in Haskell
| without making use of built-in ST or IO functionality and without
unsafe or
| potentially diverging code (such as unsafeCoerce).
A more concrete way to formulate a problem that I believe to be
equivalent is this. Implement
In article <[EMAIL PROTECTED]>,
Derek Elkins <[EMAIL PROTECTED]> wrote:
> M = (forall s.ST s)
> R = STRef s
>
> e.g. runST :: (forall s.ST s a) -> a
>
> you can use the same trick for your own RefMonad. I'm not sure if this
> will work with RefMonad exactly. If ST/STRef can be made an instanc
On Wed, 04 Jun 2003 15:19:53 -0700
Ashley Yakeley <[EMAIL PROTECTED]> wrote:
> In article <[EMAIL PROTECTED]>,
> [EMAIL PROTECTED] wrote:
>
> > Ashley Yakeley wrote:
> > ] ] Is it possible to actually implement a working instance of
> > RefMonad in ] ] Haskell, without making use of a built-in m
al Message -
From: "Ashley Yakeley" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, June 04, 2003 5:19 PM
Subject: Re: Typesafe MRef with a regular monad
> In article <[EMAIL PROTECTED]>,
> [EMAIL PROTECTED] wrote:
>
> > Ashley Yakeley wrote:
&
In article <[EMAIL PROTECTED]>,
[EMAIL PROTECTED] wrote:
> Ashley Yakeley wrote:
> ] ] Is it possible to actually implement a working instance of RefMonad in
> ] ] Haskell, without making use of a built-in monad like IO or ST?
>
> ] You certainly wouldn't be able to do this for any monad M wh
28 matches
Mail list logo