Skip to content

Instantly share code, notes, and snippets.

@khafatech
Created January 30, 2016 14:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save khafatech/53b90835a35b7beb52af to your computer and use it in GitHub Desktop.
Save khafatech/53b90835a35b7beb52af to your computer and use it in GitHub Desktop.
racket, haskell list functions
<table>
<thead>
<tr class="header">
<th style="text-align: right;">Haskell</th>
<th style="text-align: left;">Racket</th>
<th style="text-align: center;">notes</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: right;"><code>null</code></td>
<td style="text-align: left;"><code>null?</code> or <code>empty?</code></td>
<td style="text-align: center;">not to be confused with <code>null</code>/<code>empty</code></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>map</code>, <code>zipWithN</code></td>
<td style="text-align: left;"><code>map</code></td>
<td style="text-align: center;">Haskell's <code>map</code> is just <code>zipWith1</code>, after all</td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>length</code></td>
<td style="text-align: left;"><code>length</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>length . filter</code></td>
<td style="text-align: left;"><code>count</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>filter</code></td>
<td style="text-align: left;"><code>filter</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>filter . not</code></td>
<td style="text-align: left;"><code>filter-not</code></td>
<td style="text-align: center;">also, <code>negate</code> can be used to inverse a predicate</td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>lookup</code></td>
<td style="text-align: left;"><code>assoc</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>foldr</code></td>
<td style="text-align: left;"><code>foldr</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>foldl</code></td>
<td style="text-align: left;"><code>foldl</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>all</code></td>
<td style="text-align: left;"><code>andmap</code></td>
<td style="text-align: center;">polyvariadic</td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>any</code></td>
<td style="text-align: left;"><code>ormap</code></td>
<td style="text-align: center;">polyvariadic</td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>head</code></td>
<td style="text-align: left;"><code>car</code> or <code>first</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>(!! 1)</code> ... <code>(!! 9)</code></td>
<td style="text-align: left;"><code>second</code> ... <code>tenth</code></td>
<td style="text-align: center;">aka <code>cadr</code>, <code>caddr</code>, <code>cadddr</code> and <code>caddddr</code></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>!!</code></td>
<td style="text-align: left;"><code>list-ref</code></td>
<td style="text-align: center;">clumsy name hints that it isn't needed very often</td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>tail</code></td>
<td style="text-align: left;"><code>cdr</code> or <code>rest</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>:</code></td>
<td style="text-align: left;"><code>cons</code></td>
<td style="text-align: center;">since lists are tuples, it's also <code>,</code></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>last</code></td>
<td style="text-align: left;"><code>last</code></td>
<td style="text-align: center;">not in <code>racket/base</code></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>reverse</code></td>
<td style="text-align: left;"><code>reverse</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>intersperse</code>, <code>intercalate</code></td>
<td style="text-align: left;"><code>add-between</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>permutations</code></td>
<td style="text-align: left;"><code>permutations</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>++</code></td>
<td style="text-align: left;"><code>append</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>concat</code></td>
<td style="text-align: left;"><code>append*</code></td>
<td style="text-align: center;">deep version of <code>concat</code> is called <code>flatten</code></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>sum</code></td>
<td style="text-align: left;"><code>apply +</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>product</code></td>
<td style="text-align: left;"><code>apply *</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>maximum</code></td>
<td style="text-align: left;"><code>apply max</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>minimum</code></td>
<td style="text-align: left;"><code>apply min</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>maximumOn</code></td>
<td style="text-align: left;"><code>argmax</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>minimumOn</code></td>
<td style="text-align: left;"><code>argmin</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>replicate</code></td>
<td style="text-align: left;"><code>make-list</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>take</code></td>
<td style="text-align: left;"><code>take</code></td>
<td style="text-align: center;">there's also <code>take-right</code></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>drop</code></td>
<td style="text-align: left;"><code>drop</code> or <code>list-tail</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>takeWhile</code></td>
<td style="text-align: left;"><code>takef</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>dropWhile</code></td>
<td style="text-align: left;"><code>dropf</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>splitAt</code></td>
<td style="text-align: left;"><code>split-at</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>span</code></td>
<td style="text-align: left;"><code>splitf-at</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>elem</code></td>
<td style="text-align: left;"><code>member</code></td>
<td style="text-align: center;">that's where everything-but-<code>#f</code>-is-true proves useful</td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>find</code></td>
<td style="text-align: left;"><code>memf</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>partition</code></td>
<td style="text-align: left;"><code>partition</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>nub</code>[<code>By</code>,<code>On</code>]</td>
<td style="text-align: left;"><code>remove-duplicates</code></td>
<td style="text-align: center;">controlled with optional arguments</td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>delete</code></td>
<td style="text-align: left;"><code>remove</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>\\</code></td>
<td style="text-align: left;"><code>remove*</code></td>
<td style="text-align: center;">removes <em>all</em> occurences, not only the first ones</td>
</tr>
<tr class="even">
<td style="text-align: right;"><code>sort</code>[<code>By</code>,<code>On</code>]</td>
<td style="text-align: left;"><code>sort</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;"><code>mapM_</code></td>
<td style="text-align: left;"><code>for-each</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="even">
<td style="text-align: right;">list ranges</td>
<td style="text-align: left;"><code>range</code></td>
<td style="text-align: center;"></td>
</tr>
<tr class="odd">
<td style="text-align: right;">random shuffle</td>
<td style="text-align: left;"><code>shuffle</code></td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment