On Tue, Feb 1, 2011 at 4:24 PM, Roman Leshchinskiy <[email protected]> wrote:
> Johan Tibell wrote:
>>
>> Something struck me today. Look at the type signature for cloneArray#
>>
>>
>> cloneArray# :: Array#   a -> Int# -> Int# -> State# s -> (# State# s,
>> Array# a #)
>>
>>
>> Does cloneArray# really have to take and return a `State# s`?
>
> Oops, no, it doesn't. This was purely a case of mindless copy-pasting.

Does this apply to any of the other primops? For your convenience,
here's the list:

copyArray#        ::        Array# a -> Int# -> MutableArray# s a ->
Int# -> Int# -> State# s -> State# s
copyMutableArray# :: MutableArray# a -> Int# -> MutableArray# s a ->
Int# -> Int# -> State# s -> State# s

cloneArray#        ::        Array#   a -> Int# -> Int# -> State# s ->
(# State# s, Array# a #)
cloneMutableArray# :: MutableArray# s a -> Int# -> Int# -> State# s ->
(# State# s, MutableArray# s a #)

freezeArray# :: MutableArray# s a -> Int# -> Int# -> State# s -> (#
State# s, Array# a #)
thawArray#   ::        Array#   a -> Int# -> Int# -> State# s -> (#
State# s, MutableArray# s a #)

It seems to me that maybe thawArray# doesn't need to take a state
token either as the input array can be copied at any point in time. Is
it even possible to return a MutableArray# without taking a state
token as an input parameter?

Johan

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to