<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4076893983380219043</id><updated>2012-02-16T20:45:11.594-06:00</updated><category term='bitácora'/><title type='text'>Lambada</title><subtitle type='html'>Lambada developer's blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ivan Salazar</name><uri>http://www.blogger.com/profile/05173564192126560760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-5935449003669022649</id><published>2008-08-12T12:12:00.001-05:00</published><updated>2008-08-12T12:12:59.965-05:00</updated><title type='text'>zOMFG!!! We were caught on video!!!</title><content type='html'>XD&lt;br /&gt;&lt;br /&gt;He &lt;a href="http://video.google.com/videoplay?docid=-6909741472889151623"&gt;aquí&lt;/a&gt; el video de Lambada Web Dev. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-5935449003669022649?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/5935449003669022649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=5935449003669022649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/5935449003669022649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/5935449003669022649'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/08/zomfg-we-were-caught-on-video.html' title='zOMFG!!! We were caught on video!!!'/><author><name>Ivan Salazar</name><uri>http://www.blogger.com/profile/05173564192126560760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-7335889169995542246</id><published>2008-05-15T00:26:00.004-05:00</published><updated>2008-05-15T00:35:27.322-05:00</updated><title type='text'>Dijkstra would not have liked this</title><content type='html'>¡Por fin! El proyecto terminado.&lt;br /&gt;Descárgalo de &lt;a href="http://lambada.googlecode.com/files/lambada.zip"&gt;http://lambada.googlecode.com/files/lambada.zip&lt;/a&gt; o baja el cliente de svn y obtén una copia fresquesita escribiendo la siguiente línea en una terminal&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;svn checkout &lt;strong&gt;&lt;em&gt;http&lt;/em&gt;&lt;/strong&gt;://lambada.googlecode.com/svn/trunk/ lambada-read-only&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-7335889169995542246?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/7335889169995542246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=7335889169995542246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/7335889169995542246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/7335889169995542246'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/05/dijkstra-would-not-have-liked-this.html' title='Dijkstra would not have liked this'/><author><name>Ivan Salazar</name><uri>http://www.blogger.com/profile/05173564192126560760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-554748700687367340</id><published>2008-05-12T23:16:00.004-05:00</published><updated>2008-05-15T00:26:52.205-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitácora'/><title type='text'>The Pirates of CCI Valley</title><content type='html'>&lt;ul&gt;&lt;li&gt;Estuvimos trabajando en la edición del video (Julio principalmente) (6 horas)&lt;/li&gt;&lt;li&gt;Afinamos los Test Cases (media hora)&lt;/li&gt;&lt;li&gt;Intentamos correr en windows nuestra aplicación (4 horas)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Los problemas que tuvimos fueron en el último punto.&lt;br /&gt;Las librerías de Haskell así como el método de instalarlas no son lo suficientemente estables. Después de mucho buscar e intentar por medio de distintos métodos (instalación manual, cabal, cabal-install, make (Cygwin)) decidimos pedirle ayuda al compañero extranjero, Tero, para realizar la instalación de nuestro framework.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-554748700687367340?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/554748700687367340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=554748700687367340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/554748700687367340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/554748700687367340'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/05/pirates-of-cci-valley.html' title='The Pirates of CCI Valley'/><author><name>Ivan Salazar</name><uri>http://www.blogger.com/profile/05173564192126560760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-7138394880272340027</id><published>2008-04-10T22:21:00.004-05:00</published><updated>2008-05-12T23:29:21.728-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitácora'/><title type='text'>Merengueando</title><content type='html'>10 hours of work O_o&lt;br /&gt;- Waltz server created&lt;br /&gt;- Merengue interpreter created (&amp;lt;spill&gt; and &amp;lt;serve&gt; tags defined)&lt;br /&gt;- Sample code generated (Fizz-Buzz and Primes Generator)&lt;br /&gt;&lt;br /&gt;Our main problem was that we didn't send the headers correctly: we forgot to append the "\n\n" at the end of the header. We took a lot of time to catch the bug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-7138394880272340027?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/7138394880272340027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=7138394880272340027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/7138394880272340027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/7138394880272340027'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/04/merengueando.html' title='Merengueando'/><author><name>Julius</name><uri>http://www.blogger.com/profile/10035982190734150408</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_flbUmssnR8g/SRRyrIKGpSI/AAAAAAAAASY/S9JBbpxhDIs/S220/Original_Julius03.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-4801115380518638301</id><published>2008-04-01T19:18:00.001-06:00</published><updated>2008-04-01T19:20:51.868-06:00</updated><title type='text'>Haskell knows best</title><content type='html'>Check &lt;a href="http://www.lisperati.com/landoflisp/panel57.html"&gt;this&lt;/a&gt; out, and remember to keep your hands clean.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-4801115380518638301?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/4801115380518638301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=4801115380518638301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/4801115380518638301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/4801115380518638301'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/04/haskell-knows-best.html' title='Haskell knows best'/><author><name>Ivan Salazar</name><uri>http://www.blogger.com/profile/05173564192126560760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-5524487615558150294</id><published>2008-03-27T13:12:00.004-06:00</published><updated>2008-05-12T23:27:12.329-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitácora'/><title type='text'>14 horas de trabajo a lo largo de una semana</title><content type='html'>- Cambios a eval, parser y lexer&lt;br /&gt;- Interfaz para correr archivos&lt;br /&gt;- Cambios a pruebas de unidad&lt;br /&gt;- Implementación de interfaz para uso de funciones primitivas&lt;br /&gt;- Implementación de 20 funciones&lt;br /&gt;Total 14 horas de trabajo&lt;br /&gt;&lt;br /&gt;Los problemas encontrados en este parte fueron que al parsear un archivo, no habíamos tomado en cuenta la existencia de la mónada "eof" en Parsec.&lt;br /&gt;Los archivos fuente de salsa se parseaban incompletos y no el parser se forzaba (¿por la lazy evaluation tal vez?) a leer todo el archivo. El código quedó así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;parseExps :: GenParser Char () [Exp]&lt;br /&gt;parseExps = do xs &lt;- many1 parseExp&lt;br /&gt;               skipMany space&lt;br /&gt;               eof&lt;br /&gt;               return xs&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-5524487615558150294?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/5524487615558150294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=5524487615558150294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/5524487615558150294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/5524487615558150294'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/03/14-horas-de-trabajo-lo-largo-de-una.html' title='14 horas de trabajo a lo largo de una semana'/><author><name>Julius</name><uri>http://www.blogger.com/profile/10035982190734150408</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://1.bp.blogspot.com/_flbUmssnR8g/SRRyrIKGpSI/AAAAAAAAASY/S9JBbpxhDIs/S220/Original_Julius03.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-4681098731603185386</id><published>2008-03-05T15:26:00.009-06:00</published><updated>2008-05-12T23:22:21.944-05:00</updated><title type='text'>SALSA! may not be Happy</title><content type='html'>I've noticed something interesting about the way we are using Happy to generate the parser of our language salsa, it does make a difference between parse and evaluation time.&lt;br /&gt;This is the definition of the top-level function of our interpreter so far:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;rep = print . showExp . extractValue . eval . (!! 0) . parse&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Why is this important? Well, if salsa was a run-of-the-mill language, then there would be no problem: the compilers and interpreters of almost all the languages work that way (AFAIK).&lt;br /&gt;But SALSA! is not a run-of-the-mill language, it is a lisp-like language. Lisp-like languages make no distinction between read-, compile-, or run-time. That's one of the things that &lt;a href="http://www.paulgraham.com/diff.html"&gt;made Lisp&lt;/a&gt; what it is.&lt;br /&gt;&lt;br /&gt;The way Lisp implementations "interrupts" parsing is by means of the quoting functions: quote (') and quasiquote (`). When there's a quote character leading an expression, the parser just reads the expression and there's no evaluation. This is one of the first steps to do a Lisp macro.&lt;br /&gt;&lt;br /&gt;The main problem in our interpreter arises when you quote a reserved word: if, define, let, etc... The parser reads the expression but still tries to parse it, so when you quote, lets say the symbol if, you get a "Parser Error", because the rule for if is not satisfied.&lt;br /&gt;The later doesn't happen in any Scheme or Lisp interpreter. If this isn't corrected, macros that modify an existing special form won't be possible (or at least Common Lisp macros won't, I still don't know how hygienic Scheme macros work).&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;UPDATE&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;I've been trying the &lt;a href="http://legacy.cs.uu.nl/daan/parsec.html"&gt;Parsec&lt;/a&gt; Monad and reading carefully &lt;a href="http://halogen.note.amherst.edu/%7Ejdtang/scheme_in_48/tutorial/overview.html"&gt;this&lt;/a&gt; Haskell tutorial and now I think I know why the salsa interpreter had the problem above. I think (I haven't verified in any implementation yet) that the parsers for lisp-like languages just parse atoms and lists, only. Some of them provide syntactic sugar for quoting operations, but I think that's all they do. The evaluator is the program that "gives meaning" to the information stored inside the lists. That is, if the expression presented to the evaluator matches some special form, it is treated the way it should be.&lt;br /&gt;In the case of our past parser, when presented with "a token" of a special form, it tried to parse the expression as such, and failed when the specific special form was not satisfied. This is no longer true, the only terminals we have are now this: &lt;blockquote&gt;".()'&lt;/blockquote&gt; any other string is treated as a symbol, an integer or the contents of a string. No more, no less. The evaluator is now the one who gives meaning to the special forms.&lt;br /&gt;&lt;a href="http://halogen.note.amherst.edu/%7Ejdtang/scheme_in_48/tutorial/overview.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-4681098731603185386?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/4681098731603185386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=4681098731603185386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/4681098731603185386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/4681098731603185386'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/03/salsa-may-not-be-happy.html' title='SALSA! may not be Happy'/><author><name>Ivan Salazar</name><uri>http://www.blogger.com/profile/05173564192126560760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4076893983380219043.post-574115339903453177</id><published>2008-02-20T16:21:00.003-06:00</published><updated>2008-02-20T16:31:26.211-06:00</updated><title type='text'>Blog, sweet blog</title><content type='html'>Hello, we have moved from our old &lt;a href="lambadawebdev.pbwiki.com"&gt;wiki&lt;/a&gt; to &lt;a href="http://code.google.com/p/lambada/"&gt;Google Code&lt;/a&gt; and to blogger.&lt;br /&gt;This will be the place where we'll be posting our activity log from now on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4076893983380219043-574115339903453177?l=lambada-developers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lambada-developers.blogspot.com/feeds/574115339903453177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4076893983380219043&amp;postID=574115339903453177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/574115339903453177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4076893983380219043/posts/default/574115339903453177'/><link rel='alternate' type='text/html' href='http://lambada-developers.blogspot.com/2008/02/blog-sweet-blog.html' title='Blog, sweet blog'/><author><name>Ivan Salazar</name><uri>http://www.blogger.com/profile/05173564192126560760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
