<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Thought this was interesting (part of a side discussion from the racket list)<div><br><div><br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>From: </b></span><span style="font-family:'Helvetica'; font-size:medium;">Noel Welsh <<a href="mailto:noelwelsh@gmail.com">noelwelsh@gmail.com</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>Date: </b></span><span style="font-family:'Helvetica'; font-size:medium;">12 August 2010 14:42:09 GMT+01:00<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>To: </b></span><span style="font-family:'Helvetica'; font-size:medium;">Eduardo Bellani <<a href="mailto:ebellani@gmail.com">ebellani@gmail.com</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>Cc: </b></span><span style="font-family:'Helvetica'; font-size:medium;">Racket mailing list <<a href="mailto:users@racket-lang.org">users@racket-lang.org</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1);"><b>Subject: </b></span><span style="font-family:'Helvetica'; font-size:medium;"><b>Re: [racket] Interesting article</b><br></span></div><br><div>I agree with most of his gripes. Addressing his points about vectors,<br>I have a fairly extensive library of vectors functions on github<br><br>  <a href="http://github.com/noelwelsh/numeric">http://github.com/noelwelsh/numeric</a><br><br>It has the same API for vector, evector [extensible vector], and<br>f64vector. It could easily be extended to flvector but I haven't yet<br>had the need/time. (Nor the time to properly package it.) I regularly<br>write numeric algorithms (e.g. discrete cosine transform, which I<br>wrote yesterday) in a functional system using this library.<br><br>The code is written using a compile-time unit system, which is well<br>...err... something.<br><br>API is below in case anyone is interested.<br><br>N.<br><br>(define-comprehensions<br>  (import 'vector<br>          'in-vector<br>          make-vector<br>          vector?<br>          vector-ref<br>          vector-set!<br>          vector-length)<br>  (export for/vector<br>          for/fold/vector<br>          _<br>          in-vector-reverse))<br><br>;;; Constructors<br><br>(define-constructors<br>  (import make-vector<br>          for/vector<br>          in-vector<br>          vector-length)<br>  (export vector-ones<br>          vector-zeros<br>          vector-copy<br>          vector-reverse))<br><br>;;; Predicates<br><br>(define-predicates<br>  (import in-vector vector-length)<br>  (export vector-null? vector-=))<br><br>;;; Selectors<br><br>(define-selectors<br>  (import for/vector for/fold/vector in-vector vector-ref<br>vector-length list->vector)<br>  (export vector-select<br>          vector-last<br>          vector-find vector-findi<br>          vector-find-first vector-find-firsti<br>          vector-slice))<br><br>;;; Mutators<br><br>(define-mutators<br>  (import vector-ref vector-set!)<br>  (export vector-add1! vector-sub1!))<br><br>;;; Iterators<br><br>(define-iterators<br>  (import for/fold/vector for/vector<br>          in-vector<br>          vector-length)<br>  (export vector-map vector-mapi<br>          vector-fold vector-foldi))<br><br>;;; General Functions<br><br>(define-functions<br>  (import for/vector<br>          in-vector<br>          vector-set!<br>          vector-ref<br>          vector-length<br>          vector-find-firsti)<br>  (export vector* vector+ vector/ vector-<br>          vector*s vector/s vector+s vector-s<br>          vector-sum vector-product<br>          vector-dot<br>          vector-normalise<br>          vector-max vector-maxi vector-min vector-mini<br>          vector-adjoin vector-append<br>          vector-remove vector-remove-first vector-removei))<br>_________________________________________________<br>  For list-related administrative tasks:<br>  <a href="http://lists.racket-lang.org/listinfo/users">http://lists.racket-lang.org/listinfo/users</a><br></div></blockquote></div><br></div></body></html>