<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr"><meta http-equiv="content-type" content="text/html; charset=utf-8">Fabrice,</div><div dir="ltr">Thank you for your input.</div><div dir="ltr"><div>I looked at the examples, but couldn’t figure out what practical use existential types might have. Perhaps a way of typing otherwise typeless parameters?</div><div>I guess time and practice will tell.</div><div>Cheers,</div><div><div dir="ltr">Philippe</div><div dir="ltr"><br><blockquote type="cite">Le 18 mai 2021 à 21:07, fabrice nicol <fabrnicol@gmail.com> a écrit :<br><br></blockquote></div><blockquote type="cite"><div dir="ltr">
  

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  
  
    Philippe,
    <div class="moz-forward-container">
      <p>you have a set of straightforward examples pages 88-90 of the
        ROTD reference manual.</p>
      <p>Also, just above:</p>
      <blockquote>
        <p> "For procedures involving calls to existentially-typed
          predicates or functions, the compiler’s mode analysis must
          take account of the modes for type variables in all
          polymorphic calls. Universally quantified type variables have
          mode in, whereas existentially quantified type variables have
          mode out. "</p>
      </blockquote>
      <p>which outlines the relationship between some [T]... and the
        mode system. <br>
      </p>
      <p>(I found this relationship not entirely self-evident when I
        started out, but it became clearer with some practice).</p>
      <p>Fabrice<br>
      </p>
      <div class="moz-cite-prefix">Le 18/05/2021 à 04:00, <a class="moz-txt-link-abbreviated" href="mailto:users-request@lists.mercurylang.org" moz-do-not-send="true">users-request@lists.mercurylang.org</a>
        a écrit :<br>
      </div>
      <blockquote type="cite" cite="mid:mailman.1.1621303202.6436.users@lists.mercurylang.org">
        <pre class="moz-quote-pre" wrap="">Send users mailing list submissions to
        <a class="moz-txt-link-abbreviated" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true">users@lists.mercurylang.org</a>

To subscribe or unsubscribe via the World Wide Web, visit
        <a class="moz-txt-link-freetext" href="https://lists.mercurylang.org/listinfo/users" moz-do-not-send="true">https://lists.mercurylang.org/listinfo/users</a>
or, via email, send a message with subject or body 'help' to
        <a class="moz-txt-link-abbreviated" href="mailto:users-request@lists.mercurylang.org" moz-do-not-send="true">users-request@lists.mercurylang.org</a>

You can reach the person managing the list at
        <a class="moz-txt-link-abbreviated" href="mailto:users-owner@lists.mercurylang.org" moz-do-not-send="true">users-owner@lists.mercurylang.org</a>

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


Today's Topics:

   1. Using existential types (Philippe de Rochambeau)
   2. Re: Using existential types (Zoltan Somogyi)
   3. Re: Transposing array2d (fabrice nicol)
   4. Re: Transposing array2d (Sean Charles (emacstheviking))


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

Message: 1
Date: Mon, 17 May 2021 12:12:39 +0200
From: Philippe de Rochambeau <a class="moz-txt-link-rfc2396E" href="mailto:phiroc@free.fr" moz-do-not-send="true"><phiroc@free.fr></a>
To: <a class="moz-txt-link-abbreviated" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true">users@lists.mercurylang.org</a>
Subject: [m-users.] Using existential types
Message-ID: <a class="moz-txt-link-rfc2396E" href="mailto:7f911cd8-9220-4d32-a9dd-ee177fb46190@email.android.com" moz-do-not-send="true"><7f911cd8-9220-4d32-a9dd-ee177fb46190@email.android.com></a>
Content-Type: text/plain; charset="utf-8"

An HTML attachment was scrubbed...
URL: <a class="moz-txt-link-rfc2396E" href="http://lists.mercurylang.org/archives/users/attachments/20210517/993681be/attachment-0001.html" moz-do-not-send="true"><http://lists.mercurylang.org/archives/users/attachments/20210517/993681be/attachment-0001.html></a>

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

Message: 2
Date: Mon, 17 May 2021 20:19:47 +1000 (AEST)
From: "Zoltan Somogyi" <a class="moz-txt-link-rfc2396E" href="mailto:zoltan.somogyi@runbox.com" moz-do-not-send="true"><zoltan.somogyi@runbox.com></a>
To: "Philippe de Rochambeau" <a class="moz-txt-link-rfc2396E" href="mailto:phiroc@free.fr" moz-do-not-send="true"><phiroc@free.fr></a>, "users"
        <a class="moz-txt-link-rfc2396E" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true"><users@lists.mercurylang.org></a>
Subject: Re: [m-users.] Using existential types
Message-ID: <a class="moz-txt-link-rfc2396E" href="mailto:E1liaLj-0004BW-Fp@rmmprod05.runbox" moz-do-not-send="true"><E1liaLj-0004BW-Fp@rmmprod05.runbox></a>
Content-Type: text/plain; charset="utf-8"


2021-05-17 20:12 GMT+10:00 "Philippe de Rochambeau" <a class="moz-txt-link-rfc2396E" href="mailto:phiroc@free.fr" moz-do-not-send="true"><phiroc@free.fr></a>:
</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">Hello,could someone please explain the advantages of using existential types
(some) in predicates as opposed to universal types?Many thanks.Best regards,
</pre>
        </blockquote>
        <pre class="moz-quote-pre" wrap="">It is not question of "which is better"; they have totally different roles.
Universal types implement parametric polymorphism (the same operation
applies to all types the same way), while existential types can help implement
non-parametric polymorphism (an operation applies only to a specified set
of types, and may be implemented differently for different types).

People whose programming style is mostly based on functional and
logic programming tend to use parametric polymorphism almost exclusively,
because they tend to use algebraic data types instead of non-parametric
polymorphism. People whose programming style is mostly based on
object oriented programming tend to use non-parametric polymorphism,
because until recently, the popular OO languages did not support either
parametric polymorphism or algebraic data types :-(

Zoltan.

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

Message: 3
Date: Mon, 17 May 2021 17:54:06 +0200
From: fabrice nicol <a class="moz-txt-link-rfc2396E" href="mailto:fabrnicol@gmail.com" moz-do-not-send="true"><fabrnicol@gmail.com></a>
To: "Sean Charles (emacstheviking)" <a class="moz-txt-link-rfc2396E" href="mailto:objitsu@gmail.com" moz-do-not-send="true"><objitsu@gmail.com></a>
Cc: users <a class="moz-txt-link-rfc2396E" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true"><users@lists.mercurylang.org></a>
Subject: Re: [m-users.] Transposing array2d
Message-ID: <a class="moz-txt-link-rfc2396E" href="mailto:2af3a9ed-1d70-8784-e49c-e8fac88b789a@gmail.com" moz-do-not-send="true"><2af3a9ed-1d70-8784-e49c-e8fac88b789a@gmail.com></a>
Content-Type: text/plain; charset="utf-8"; Format="flowed"

Thanks Sean, actually  the 'transpose' algorithm is encoded in file 
'Matrix.asm', not in in Array.asm as I first thought.

I will look into it and see if it proves useful.

Fabrice

Le 17/05/2021 à 10:01, Sean Charles (emacstheviking) a écrit :
</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">On a possibly connected but probably orthogonal note, this came across 
my radar from the SWI list, an assembly language written numerical 
library. I don’t know if it has array transposition but somebody might 
care to wrap it with the FFI library in the future? It does have Array 
Functions section and moving and copying things but no explicit 
mention on that page. The source might reveal more.

<a class="moz-txt-link-freetext" href="http://linasm.sourceforge.net/docs/api/array.php" moz-do-not-send="true">http://linasm.sourceforge.net/docs/api/array.php</a> 
<a class="moz-txt-link-rfc2396E" href="http://linasm.sourceforge.net/docs/api/array.php" moz-do-not-send="true"><http://linasm.sourceforge.net/docs/api/array.php></a>

<a class="moz-txt-link-freetext" href="http://linasm.sourceforge.net/about/benchmarks.php" moz-do-not-send="true">http://linasm.sourceforge.net/about/benchmarks.php</a> 
<a class="moz-txt-link-rfc2396E" href="http://linasm.sourceforge.net/about/benchmarks.php" moz-do-not-send="true"><http://linasm.sourceforge.net/about/benchmarks.php></a>


</pre>
          <blockquote type="cite">
            <pre class="moz-quote-pre" wrap="">On 17 May 2021, at 06:50, fabrice nicol <<a class="moz-txt-link-abbreviated" href="mailto:fabrnicol@gmail.com" moz-do-not-send="true">fabrnicol@gmail.com</a> 
<a class="moz-txt-link-rfc2396E" href="mailto:fabrnicol@gmail.com" moz-do-not-send="true"><mailto:fabrnicol@gmail.com></a>> wrote:

I wondered whether someone ever implemented a 'transpose' procedure 
for array2d.

As there seems to be none, I have implemented a basic fallback here: 
<a class="moz-txt-link-freetext" href="https://github.com/fabnicol/RMercury/blob/library/ri.m" moz-do-not-send="true">https://github.com/fabnicol/RMercury/blob/library/ri.m</a>, line 1236.

[Note: the library itself is very much work in progress, with 
numerous issues and loose ends. I'm just quoting it for reference to 
'transpose'.]

This works, but it is the basic Cate & Twigg formula. There are 
numerous better options around, perhaps someone knows of some free 
code around?

Fabrice


_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true">users@lists.mercurylang.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true"><mailto:users@lists.mercurylang.org></a>
<a class="moz-txt-link-freetext" href="https://lists.mercurylang.org/listinfo/users" moz-do-not-send="true">https://lists.mercurylang.org/listinfo/users</a>
</pre>
          </blockquote>
        </blockquote>
        <pre class="moz-quote-pre" wrap="">-------------- next part --------------
An HTML attachment was scrubbed...
URL: <a class="moz-txt-link-rfc2396E" href="http://lists.mercurylang.org/archives/users/attachments/20210517/43022076/attachment-0001.html" moz-do-not-send="true"><http://lists.mercurylang.org/archives/users/attachments/20210517/43022076/attachment-0001.html></a>

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

Message: 4
Date: Mon, 17 May 2021 16:54:39 +0100
From: "Sean Charles (emacstheviking)" <a class="moz-txt-link-rfc2396E" href="mailto:objitsu@gmail.com" moz-do-not-send="true"><objitsu@gmail.com></a>
To: fabrice nicol <a class="moz-txt-link-rfc2396E" href="mailto:fabrnicol@gmail.com" moz-do-not-send="true"><fabrnicol@gmail.com></a>
Cc: users <a class="moz-txt-link-rfc2396E" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true"><users@lists.mercurylang.org></a>
Subject: Re: [m-users.] Transposing array2d
Message-ID: <a class="moz-txt-link-rfc2396E" href="mailto:0F3EA632-2AA8-4195-98EC-CED7D91B0D9E@gmail.com" moz-do-not-send="true"><0F3EA632-2AA8-4195-98EC-CED7D91B0D9E@gmail.com></a>
Content-Type: text/plain; charset="utf-8"

As usual, it’s the naming of things that’s the hardest! I hope it proves useful…
:)

</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">On 17 May 2021, at 16:54, fabrice nicol <a class="moz-txt-link-rfc2396E" href="mailto:fabrnicol@gmail.com" moz-do-not-send="true"><fabrnicol@gmail.com></a> wrote:

Thanks Sean, actually  the 'transpose' algorithm is encoded in file 'Matrix.asm', not in in Array.asm as I first thought. 

I will look into it and see if it proves useful.

Fabrice

Le 17/05/2021 à 10:01, Sean Charles (emacstheviking) a écrit :
</pre>
          <blockquote type="cite">
            <pre class="moz-quote-pre" wrap="">On a possibly connected but probably orthogonal note, this came across my radar from the SWI list, an assembly language written numerical library. I don’t know if it has array transposition but somebody might care to wrap it with the FFI library in the future? It does have Array Functions section and moving and copying things but no explicit mention on that page. The source might reveal more.

<a class="moz-txt-link-freetext" href="http://linasm.sourceforge.net/docs/api/array.php" moz-do-not-send="true">http://linasm.sourceforge.net/docs/api/array.php</a> <a class="moz-txt-link-rfc2396E" href="http://linasm.sourceforge.net/docs/api/array.php" moz-do-not-send="true"><http://linasm.sourceforge.net/docs/api/array.php></a>

<a class="moz-txt-link-freetext" href="http://linasm.sourceforge.net/about/benchmarks.php" moz-do-not-send="true">http://linasm.sourceforge.net/about/benchmarks.php</a> <a class="moz-txt-link-rfc2396E" href="http://linasm.sourceforge.net/about/benchmarks.php" moz-do-not-send="true"><http://linasm.sourceforge.net/about/benchmarks.php></a>


</pre>
            <blockquote type="cite">
              <pre class="moz-quote-pre" wrap="">On 17 May 2021, at 06:50, fabrice nicol <<a class="moz-txt-link-abbreviated" href="mailto:fabrnicol@gmail.com" moz-do-not-send="true">fabrnicol@gmail.com</a> <a class="moz-txt-link-rfc2396E" href="mailto:fabrnicol@gmail.com" moz-do-not-send="true"><mailto:fabrnicol@gmail.com></a>> wrote:

I wondered whether someone ever implemented a 'transpose' procedure for array2d.

As there seems to be none, I have implemented a basic fallback here: <a class="moz-txt-link-freetext" href="https://github.com/fabnicol/RMercury/blob/library/ri.m" moz-do-not-send="true">https://github.com/fabnicol/RMercury/blob/library/ri.m</a> <a class="moz-txt-link-rfc2396E" href="https://github.com/fabnicol/RMercury/blob/library/ri.m" moz-do-not-send="true"><https://github.com/fabnicol/RMercury/blob/library/ri.m></a>, line 1236. 

[Note: the library itself is very much work in progress, with numerous issues and loose ends. I'm just quoting it for reference to 'transpose'.]

This works, but it is the basic Cate & Twigg formula. There are numerous better options around, perhaps someone knows of some free code around?

Fabrice



_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true">users@lists.mercurylang.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true"><mailto:users@lists.mercurylang.org></a>
<a class="moz-txt-link-freetext" href="https://lists.mercurylang.org/listinfo/users" moz-do-not-send="true">https://lists.mercurylang.org/listinfo/users</a> <a class="moz-txt-link-rfc2396E" href="https://lists.mercurylang.org/listinfo/users" moz-do-not-send="true"><https://lists.mercurylang.org/listinfo/users></a>
</pre>
            </blockquote>
          </blockquote>
        </blockquote>
        <pre class="moz-quote-pre" wrap="">-------------- next part --------------
An HTML attachment was scrubbed...
URL: <a class="moz-txt-link-rfc2396E" href="http://lists.mercurylang.org/archives/users/attachments/20210517/ecfcdd58/attachment-0001.html" moz-do-not-send="true"><http://lists.mercurylang.org/archives/users/attachments/20210517/ecfcdd58/attachment-0001.html></a>

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

Subject: Digest Footer

_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.mercurylang.org" moz-do-not-send="true">users@lists.mercurylang.org</a>
<a class="moz-txt-link-freetext" href="https://lists.mercurylang.org/listinfo/users" moz-do-not-send="true">https://lists.mercurylang.org/listinfo/users</a>


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

End of users Digest, Vol 81, Issue 23
*************************************
</pre>
      </blockquote>
    </div>
  

<span>_______________________________________________</span><br><span>users mailing list</span><br><span>users@lists.mercurylang.org</span><br><span>https://lists.mercurylang.org/listinfo/users</span><br></div></blockquote></div></div></body></html>