AFP Course
Home
Education Page
Schedule
Literature
Assignment
Exercises
DSL Topics
Organization
Discussion Forum
Useful Links
Haskell Home
Haskell 98 Report
Haskell Wiki
GHC Home
GHC Libraries
Profiling with GHC
Monad Tutorial
wxHaskell
HC&A Report
Haddock
Growing a Language
FFI in Haskell
wxHaskell docs
hoogle
Center for ST
Home
Master Program
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Discussion Forum
Afp0607
Participating students are encouraged to post their questions related to programming assignments, exercises, and lectures in this discussion forum, as well as answers and hints for fellow students. This serves two purposes: * To stimulate interaction between students during the course. A lively discussion is beneficial for everyone. * To minimize the startup time for the assignments (for instance, about the software we use, GHC flags that are required for compilation, etc.). Needless to say, it is *strictly prohibited* to include (partial) answers to assignments. ------ *Q:* Can we use the UUAG system for the programming assignment? <br> *A:* Sure! You may use all available tools and libraries to get the job done. <br> *Q:* Which (introductory) Haskell textbook do you recommend me? <br> *A:* Have a look at Jeroen Fokker's [[http://www.cs.uu.nl/wiki/FP/CourseLiterature][FP lecture notes]] (in Dutch, probably also available in printed form at the student desk). Another good textbook (in English) is written by [[http://www.cs.kent.ac.uk/people/staff/sjt/craft2e/][Simon Thompson]] and can be ordered online. * If you want to build =wxHaskell= from source, you might want to have a look at [[http://www.haskell.org/haskellwiki/WxHaskell/Install]]. * Some of you showed interest in (tutorials on) Category Theory. I would recommend to read _Basic Category Theory for Computer Scientists_ by _Benjamin C. Pierce_ (in the department's library, or just contact me). The material is definitely not suited for the faint-hearted. Remi has collected many other pointers to tutorials: you can also contact him. -- Main.BastiaanHeeren - 09 Feb 2007 --------------------- Comments by students: --------------------- If you found the =(\ ~(x:xs) -> x:x:xs) undefined= example confusing (like I did), it's probably because of a poor understanding of the type of undefined. This example should make it clear. <verbatim> \(x:xs) -> (head x,x,xs,[xs]) :: [[a]] -> (a,[a],[[a]],[[[a]]]) undefined :: a (\~(x : xs) -> (head x,x,xs,[xs])) undefined :: (a,[a],[[a]],[[[a]]]) </verbatim> As Bastiaan said, undefined has the most general type. Even if you need an argument of type =(a,[(b,c,d)],e)=, undefined will satisfy that type. The practical use of this "most general type" is for polymorphism. E.g. the function =id= can be used on a variable of any type, because the type of its argument (and result) is the most general type. *Bastiaan:* examples with =undefined= are always a bit contrived. The main point I wanted to illustrate is whether some expression is evaluated (because of pattern matching) or not. Let me show you a different example: <verbatim> primes = sieve [2..] where sieve (n:rest) = n : sieve (filter (\x -> x `mod` n > 0) rest) bigprimes = drop 1000 primes test1 (x:xs) = True test2 ~(x:xs) = True </verbatim> Here, =bigprimes= is an infinite list of prime numbers, and because the first 1000 numbers are skipped, it will take some time to compute the head of this list (at least on my machine). Try the expression =test1 bigprimes= and notice the delay (or type =:set +s= in =ghci= to inspect the stats). On the other hand, the expression =test2 bigprimes= does not evaluate =bigprimes= at all. _(But be careful: because =bigprimes= is not a function, the part that is evaluated is shared/remembered by the interpreter.)_ I hope this helps. -- Main.JeielSchalkwijk - 14 Feb 2007 If you use wxWidgets 2.6.3 and wxHaskell 0.10.0 on Mac OS X, you'll have to give the gameBoard (src/Ants.hs:68) a bgcolor attribute (e.g. white) to prevent the animation becoming unreadable. -- Main.EelcoLempsink - 17 Feb 2007 Does Haskell have indentation from hell? Example: <verbatim> true = do something totally awesome </verbatim> If I change the name of the function to "false", it's suddenly 5 characters and the do statements don't line up, and ghc throws the beloved "parse error". How do you cope with this? I've searched high and low and only come up with a barely passable [[http://tokyoenvious.xrea.jp/vim/ indentation mode for vim]], which doesn't address the above scenario. Something I've been doing (and indeed I've seen it suggested as good practice) is: <verbatim> true = do something totally awesome </verbatim> Now the sequence of statements can be indented with any number of tabs/spaces and will work whatever happens to the first line. It also frees you from the clutches of spaces. Purists would probably balk at this, though. -- Main.MartinMatusiak - 22 Feb 2007 Your solution (to write the first monadic statement _under_ the do keyword) does the trick. Did you know that you may write the expressions something, totally, and awesome with less indentation than the do keyword (e.g., only 3 spaces)? I have seen two other layout styles for do notation that do not have the problem you mentioned above: * Also move do keyword to the next line (this is what I normally do: no pun intented here) * Don't rely on the layout rule when programming in a do, but insert braces and semicolons. -- Main.BastiaanHeeren - 23 Feb 2007 I experienced some difficulties getting wxhaskell to work on my Ubuntu (6.06 a.k.a. Dapper Drake) machine. I thought I'd share my solution to save other people with similar problems some time. The symptoms are: * Inability to get the precompiled binary packages to work with ghc 6.4.1. * Large volumes of compile errors when building wxhaskell. * Complaints about undefined references when linking your wxhaskell program. These installation instructions are based upon the instructions found at http://wiki.loria.fr/wiki/GenI/Getting_GenI/Instructions_for_Ubuntu_Linux#wxhaskell, combined with some improvising and googling. 1. Make sure you have the following packages installed: * libwxgtk-2.6-0 * libwxgtk-2.6-dev * ghc6 * freeglut3-dev * g++ * libx11-dev 2. Build wxhaskell with the following commands: <pre> darcs get http://darcs.haskell.org/wxhaskell cd wxhaskell ./configure --with-opengl make sudo make install make wx sudo make wx-install </pre> Good luck! -- Main.JeroenLeeuwestein - 25 Feb 2007 Apply the following fixes if you want to compile the ant simulator with ghc 6.6: * The function =bounds= no longer exists: use =getBounds= instead, which has a slightly different type as it returns the bounds of an array in a monad (IO in our case). You have to modify three functions in =Caching.hs= and the function =setVirtualSize= in =Ants.hs=. * The default background color of widgets changed from white into black. This means that you have to set the property =bgcolor= to white for all panels in =Ants.hs=, and for the =scrolledWindow= in the function =gui= in particular. -- Main.BastiaanHeeren - 27 Feb 2007 Re: Space leaks lecture. Does ghc generate those fancy space charts or only the .prof files? *A:* Compile your program with profiling enabled (=-prof -auto-all=). Run your executable and provide a flag to the runtime system (=+RTS -hc=): this will produce a =.hp= file. Next, you should use the =hp2ps= tool (which is shipped with =ghc= if I remember correctly) to generate a =.ps= file from the =.hp= file. Open de postscript file and enjoy! Also see [[http://www.haskell.org/ghc/docs/latest/html/users_guide/prof-heap.html][the ghc users guide]]. -- Main.MartinMatusiak - 05 Mar 2007 A question : It is maybe silly but it really bothers me. What does the phrase "first class" mean? I see it every where, like first class value, first class expression, first class library and etc. (Bastiaan) Maybe reading [[http://en.wikipedia.org/wiki/First-class_function]] helps? -- Main.GuangyuZhang - 09 Mar 2007 Incidentally, what does the Haskell community think of Common Lisp? Old? Flexible? Sloppy? Evil? -- Main.MartinMatusiak - 22 Mar 2007 When importing Quick Check in GHC I get these errors: <verbatim> [2 of 3] Compiling QuickCheck ( QuickCheck.hs, interpreted ) QuickCheck.hs:147:52: Not in scope: `chr' QuickCheck.hs:148:27: Not in scope: `ord' QuickCheck.hs:155:41: Not in scope: `fromInt' QuickCheck.hs:155:51: Not in scope: `fromInt' </verbatim> The first is solved by importing chr and ord from module Char. But fromInt does not exist, according to hoogle. Help? -- Main.JeielSchalkwijk - 26 Mar 2007 Use =fromIntegral :: (Num b, Integral a) => a -> b= to convert an integer value (either =Int= or =Integer=) to a different numeric type. I don't understand why you are compiling the Quick Check module: it is part of the hierarchical libraries and it can thus be imported directly from your own module: <verbatim> import Test.QuickCheck </verbatim> -- Main.BastiaanHeeren - 27 Mar 2007 Ah, what a stupid mistake. I did =import !QuickCheck= which obviously did not work. Then I went to the !QuickCheck website and it said that I needed to download !QuickCheck.hs. But the !QuickCheck.hs file found there is obviously a bit dated. -- Main.JeielSchalkwijk - 26 Mar 2007 Using this solution file [[http://urchin.earth.li/icfpcontest/2004/sub/solution-1.ant]] and the sample6.world file, Joost saw that at step 2058 on the black ant hill, a red ant takes some food without actually being in the cell where the food is. Is something wrong with the simulator? -- Main.JeielSchalkwijk - 29 Mar 2007 Hello Jeiel. I tried to reproduce the behaviour you described above, but I couldn't. How did you conclude that some ant takes food that is not there? I hoped that your conclusion was not based on visual input since the food particles are represented as circles and the radius of such a circle depends on the total number of particles in that cell. For your information, the simulator has been tested quite thoroughly (there was a lot of debug information made available during the actual contest to check whether a simulator did conform to the specification: the AFP simulator implementation passed this test), but of course it is always possible that somewhere a bug was introduced. Show it to me, or better, try to fix it yourself. Actually, this shouldn't be too hard (and will be highly appreciated). -- Main.BastiaanHeeren - 30 Mar 2007 I tried to reproduce it, but it did not work. Although Joost and I are certain of what we saw yesterday. We did determine it visually, but zoomed in as much as we could to be certain.. I looked again very closely and it does seem that when there is exactly one food dropped on a cell, the cell does not show it (step 1185 at the black ant hill). Only when the second food is dropped can you see a green circle. So that seems the most likely explanation for what we saw: there was exactly one food and the red ant picked it up. We will try to reproduce it later (it's not good to give a faulty reference ;-) ), but this makes the point moot. -- Main.JeielSchalkwijk - 30 Mar 2007 Eelco, Niels, and Reinier have modified the ant visualizer to show all markers. They agreed to share this [[%ATTACHURL%/ShowMarkers.patch][patch]] with all other teams. -- Main.BastiaanHeeren - 10 Apr 2007
Topic attachments
I
Attachment
Action
Size
Date
Who
Comment
patch
ShowMarkers.patch
manage
9.6 K
10 Apr 2007 - 06:41
BastiaanHeeren
Patch for ant visualizer