[Haskell-cafe] I think someone had a complicated program to use brackets for array indexing - is it possible to use a DSL for this?

Tikhon Jelvis tikhon at jelv.is
Mon Jun 1 20:32:25 UTC 2015


Yep. Well, tuples of one element aren't great, but a function Int -> a is a
reasonable interface for an array type. But you won't get the nice bracket
syntax you want.

More generally, though, the problem is that this type is more general, so
you can't make any assumptions about it. A function Int -> a can do
whatever, not just look things up in an array. Depending on what you need,
this could be fine, but how would you write a function for length?

Thinking about it a bit more, it's really not the best approach for most
cases, but it's the only way I can think of for making bracket syntax (or
something like it) work.

On Mon, Jun 1, 2015 at 1:29 PM, KC <kc1956 at gmail.com> wrote:

> Then a tuple might work better as input to a function to index into an
> array
>
> e.g. myArray  (5)
>
> --
> --
>
> Sent from an expensive device which will be obsolete in a few months! :D
>
> Casey
>
> On Jun 1, 2015 1:21 PM, "Tikhon Jelvis" <tikhon at jelv.is> wrote:
>
>> You could make myArray a function that takes a list as an input. Of
>> course, all your other array functions have to account for this too. A
>> potential advantage is that this approach leaves the underlying array type
>> abstract, so you could mix and match different data structure on the
>> backend. (IntMap, Array, Vector… etc.)
>>
>> A disadvantage is that this is non-standard usage which could be
>> confusing to people and there's no way I know of to statically ensure the
>> list passed in always had one element. That is, myArray [1, 2] would be
>> legal and result in a runtime error.
>>
>> I don't know of a way to do it while using a normal array type directly.
>>
>> On Mon, Jun 1, 2015 at 1:17 PM, KC <kc1956 at gmail.com> wrote:
>>
>>> I think someone had a complicated program to use brackets for array
>>> indexing - is it possible to use a DSL for this?
>>>
>>> That is, to use myArray [5] and have a DSL convert it to standard
>>> Haskell syntax
>>>
>>> --
>>> --
>>>
>>> Sent from an expensive device which will be obsolete in a few months! :D
>>>
>>> Casey
>>>
>>>
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150601/e74771a9/attachment.html>


More information about the Haskell-Cafe mailing list