Send Beginners mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://www.haskell.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

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


Today's Topics:

   1. Re:  Monads in javascript (Patrick LeBoutillier)
   2.  Pearls of Functional Algorithm Design, Chapter 2, The
      Surpasser Problem (Costello, Roger L.)
   3. Re:  Anyone have problems with cabal and SDL? (Ben Sanders)
   4. Re:  Anyone have problems with cabal and SDL? (Stephen Tetley)


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

Message: 1
Date: Sat, 16 Jul 2011 07:54:16 -0400
From: Patrick LeBoutillier <[email protected]>
Subject: Re: [Haskell-beginners] Monads in javascript
To: Martin Drautzburg <[email protected]>
Cc: [email protected]
Message-ID:
        <CAJcQsbhs6rsxxcbL+=hxyJyaBaB1MJFKmXC=eatbeyux206...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Martin,

> z' = [1,2,3] >>= (\y1->[y1+1] >>= (\y2->return (y1*y2)))

I'm not a Haskell expert, but I think the idea here is that the second
lambda is defined *inside* the first one. I think that's the only way
that it can access the first lambda's argument.

I don't know much Javascript, but here is a small Perl snippet that
(kinda) implements the list monad and your example:


use strict ;
use Data::Dumper ;

sub bindM {
        my $xs = shift ;
        my $fx2ys = shift ;

        # maps and concats in one shot
        my @ys = map {@{$fx2ys->($_)}} @{$xs} ;
        return \@ys ;
}

sub returnM {
        my $x = shift ;

        return [$x] ;
}

sub z {
        my $arg = [1,2,3] ;

        bindM($arg, sub {
                my $y1 = shift ;
                bindM([$y1 + 1], sub {
                        my $y2 = shift ;
                        returnM($y1 * $y2) ;
                }) ;
        }) ;
}

print Dumper(z()), "\n" ;


Since $y1 is local to te first lambda, you have to define the second one inside.


Patrick



>
> works again, which misled me to believe that (>>=) associates to the right.
>
> In javascript a lambda would look like this
>
> f = function(y1) {return [y1+1]}
>
> I cannot see how I could possible write a function (>>=) which chains such
> lambdas such that I can still access the arguments outside the function
> bodies. It is like there are always parentheses around the lambdas. Well there
> actually are braces in javascript, but it can't be just the syntax.
>
> So what is javascript missing? Is it because in haskell a lambda is just an
> expression wheras in javascript it is something special?
>
>
>
>
> --
> Martin
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners
>



-- 
=====================
Patrick LeBoutillier
Rosem?re, Qu?bec, Canada



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

Message: 2
Date: Sat, 16 Jul 2011 11:27:49 -0400
From: "Costello, Roger L." <[email protected]>
Subject: [Haskell-beginners] Pearls of Functional Algorithm Design,
        Chapter 2, The Surpasser Problem
To: "[email protected]" <[email protected]>
Message-ID:
        <[email protected]>
Content-Type: text/plain; charset="us-ascii"

Hi Folks,

I created Powerpoint slides to describe the algorithm for the "surpasser 
problem".

Here is a motivation for the surpasser problem:

Stock Market: 

Each day I record the closing value of the DOW. Occasionally, I pick a date and 
ask, "How many days after this date has the stock market closed at a higher 
value?"

A more challenging question is, "Which day has the most number of following 
days where the stock market closed at a higher value?"

People's Height: 

Line up a bunch of people. Pick one person and ask, "How many of the following 
people are taller than this person?"

A more challenging question is, "Which person has the most number of following 
people that are taller?"

Word Analysis: 

Take a letter in a word and ask, "How many of the following letters are bigger 
(occurs later in the alphabet) than this letter?"

A more challenging question is, "Which letter has the most number of following 
letters that are bigger?"

Thus we see a recurring problem: find the number of surpassers; or, find the 
maximum surpasser count. Recurring problems are good subjects for elegant 
algorithms.

More ...

http://www.xfront.com/Pearls-of-Functional-Algorithm-Design/Chapter2/surpasser-problem.pptx

/Roger





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

Message: 3
Date: Sat, 16 Jul 2011 18:18:02 -0700
From: Ben Sanders <[email protected]>
Subject: Re: [Haskell-beginners] Anyone have problems with cabal and
        SDL?
To: Alvaro Vilanova <[email protected]>
Cc: [email protected]
Message-ID:
        <cabqbbs6w92hdl_zsfzevcijgjuksn5usoah+4j6xnye70jf...@mail.gmail.com>
Content-Type: text/plain; charset="windows-1252"

Thanks for this.

I downloaded the source for TimePiece and am trying to get it running on my
Mac.
When I do a cabal install, I get the output below.
Feels like I am missing something simple, but various searches haven't
turned up much so far.  Any thoughts?


$ cabal install
Warning: TimePiece.cabal: A package using 'cabal-version: >=1.2' must use
section syntax. See the Cabal user guide for details.
Resolving dependencies...
[1 of 1] Compiling Main             (
/var/folders/+E/+EbqIqRfGbKrq3GUh28kdU+++TM/-Tmp-/SDL-0.6.215336/SDL-0.6.2/Setup.lhs,
/var/folders/+E/+EbqIqRfGbKrq3GUh28kdU+++TM/-Tmp-/SDL-0.6.215336/SDL-0.6.2/dist/setup/Main.o
)

/var/folders/+E/+EbqIqRfGbKrq3GUh28kdU+++TM/-Tmp-/SDL-0.6.215336/SDL-0.6.2/Setup.lhs:2:3:
    Warning: In the use of `defaultUserHooks'
             (imported from Distribution.Simple):
             Deprecated: "Use simpleUserHooks or autoconfUserHooks, unless
you need Cabal-1.2
             compatibility in which case you must stick with
defaultUserHooks"
Linking
/var/folders/+E/+EbqIqRfGbKrq3GUh28kdU+++TM/-Tmp-/SDL-0.6.215336/SDL-0.6.2/dist/setup/setup
...
ld: warning: could not create compact unwind for .LFB3: non-standard
register 5 being saved in prolog
Warning: defaultUserHooks in Setup script is deprecated.
Configuring SDL-0.6.2...
configure: WARNING: unrecognized options: --with-hc, --with-gcc
checking for sdl-config... /opt/local/bin/sdl-config
configure: creating ./config.status
config.status: creating config.mk
config.status: creating SDL.buildinfo
config.status: creating includes/HsSDLConfig.h
configure: WARNING: unrecognized options: --with-hc, --with-gcc
Preprocessing library SDL-0.6.2...
General.hsc: In function ?main?:
General.hsc:60: error: ?SDL_INIT_CDROM? undeclared (first use in this
function)
General.hsc:60: error: (Each undeclared identifier is reported only once
General.hsc:60: error: for each function it appears in.)
compiling dist/build/Graphics/UI/SDL/General_hsc_make.c failed (exit code 1)
command was: /usr/bin/gcc -c dist/build/Graphics/UI/SDL/General_hsc_make.c
-o dist/build/Graphics/UI/SDL/General_hsc_make.o -march=i686 -m32
-fno-stack-protector -march=i686 -m32 -fno-stack-protector -march=i686 -m32
-D__GLASGOW_HASKELL__=700 -Ddarwin_BUILD_OS -Ddarwin_HOST_OS
-Di386_BUILD_ARCH -Di386_HOST_ARCH -I/opt/local/include/SDL -D_THREAD_SAFE
-I/Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/lib/ghc-7.0.3/base-4.3.1.0/include
-I/Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/lib/ghc-7.0.3/include
-I/Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/lib/ghc-7.0.3/include
-I/Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/lib/ghc-7.0.3/include/
cabal: Error: some packages failed to install:
SDL-0.6.2 failed during the building phase. The exception was:
ExitFailure 1
SDL-gfx-0.6.0 depends on SDL-0.6.2 which failed to install.
SDL-image-0.6.1 depends on SDL-0.6.2 which failed to install.
SDL-ttf-0.6.1 depends on SDL-0.6.2 which failed to install.
TimePiece-0.0.3 depends on SDL-0.6.2 which failed to install.



On Tue, Feb 22, 2011 at 1:05 PM, Alvaro Vilanova <[email protected]> wrote:

> The log says that configuration SDL tool `sdl-config` is not installed,
> probably, due to you have installed SDL framework. Cabal, or the SDL
> package
> (I dont know who has the problem here) doesn't take into account that the
> system is a MacOs so it doesn't search the library as a framework.
>
> To solve this, you have to compile the library manually, just `./configure
> &&
> make && sudo make install` or install it with MacPorts. Then you will be
> able
> to compile SDL projects. Nothing more. If you want to link and run your own
> Haskell SDL projects on MacOs you have to dive in the next odyssey:
>
> SDL has a tricky way to enable C `main` function to run graphic
> applications
> on all systems. So first, we need a C function wich is going to be hooked
> by
> SDL, and this function is going to run our Haskell application. We put this
> main function in c_main.c [1].
>
> To be compatible with all other plataforms we have keep our Main Haskell
> function, so we rename this function in a FFI Module which will be compiled
> only on MacOS, named HS_Main.hs [2].
>
> Now we have to compile c_main.c with:
>
> gcc -c c_main.c `sdl-config --cflags` -framework GHC
>
> But, surprise, the GHC framework seems that is not well-formed, so gcc can
> not get the
> header and you have to search it manually. In my case:
>
> find / -name "HsFFI.h"
> ...
>
> /Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.3/include/HSffi.h
> ...
>
> gcc -c c_main.c `sdl-config --cflags`
> -I/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.3/include/
>
> And now we have a c_main.o. Next, we have to compile our HSMain which
> imports
> our Main module which contains the default main function.
>
> ghc --make HSMain.hs -no-hs-main c_main.o -framework Cocoa
>
> And if you have the default Haskell plataform for MacOs you are going to
> get one surprise more:
>
> Linking ./Main ...
> ld: warning: in c_main.o, file was built for unsupported file format which
> is not the architecture being linked (i386)
> ld: warning: in /usr/local/lib/libSDLmain.a, file was built for unsupported
> file format which is not the architecture being linked (i386)
> ld: warning: in /usr/local/lib/libSDL.dylib, file was built for unsupported
> file format which is not the architecture being linked (i386)
>
> This means that you have a 32 bits GHC but gcc compiles to 64 bits. You
> have
> 3 options: give up, cross-compile c_main.c and sdl to 32 bits, compile and
> install a custom haskell-plataform enabling 64 bits support.
>
> Good luck, you will need it!
>
> PD: With cabal is a little more easy, see TimePiece as example [3].
>
> [1] https://gist.github.com/839329
> [2] https://gist.github.com/839340
> [3] http://hackage.haskell.org/package/TimePiece
>
>
> 2011/2/21 Tom Murphy <[email protected]>
>
>> When I use Cabal to get any program which depends on the SDL library, this
>> is the error I get.
>>
>> "
>> checking for sdl-config... no
>> checking for sdl11-config... no
>> configure: error: *** SDL not found! Get SDL from www.libsdl.org.
>> If you already installed it, check it's in the path. If problem remains,
>> please send a mail to the address that appears in ./configure --version
>> indicating your platform, the version of configure script and the problem.
>> cabal: Error: some packages failed to install:
>> Raincat-1.1.1.2 depends on SDL-0.6.2 which failed to install.
>> SDL-0.6.2 failed during the configure step. The exception was:
>> exit: ExitFailure 1
>> SDL-image-0.6.1 depends on SDL-0.6.2 which failed to install.
>> SDL-mixer-0.6.1 depends on SDL-0.6.2 which failed to install.
>> "
>>
>>
>> I have SDL 1.2.14 (correctly) installed on my system.
>> I'd really appreciate any help with this.
>>
>> Tom
>>
>> _______________________________________________
>> Beginners mailing list
>> [email protected]
>> http://www.haskell.org/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20110716/9892af0d/attachment-0001.htm>

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

Message: 4
Date: Sun, 17 Jul 2011 07:40:25 +0100
From: Stephen Tetley <[email protected]>
Subject: Re: [Haskell-beginners] Anyone have problems with cabal and
        SDL?
Cc: [email protected]
Message-ID:
        <cab2tprd66tnti4faac0+zblax38yfjxc5qhxjyhj+fqlom3...@mail.gmail.com>
Content-Type: text/plain; charset=windows-1252

On 17 July 2011 02:18, Ben Sanders <[email protected]> wrote:
> Thanks for this.
> I downloaded the source for TimePiece and am trying to get it running on my
> Mac.
> When I do a cabal install, I get the output below.
> Feels like I am missing something simple, but various searches haven't

> Preprocessing library SDL-0.6.2...
> General.hsc: In function ?main?:
> General.hsc:60: error: ?SDL_INIT_CDROM? undeclared (first use in this
> function)
> General.hsc:60: error: (Each undeclared identifier is reported only once
> General.hsc:60: error: for each function it appears in.)
> compiling dist/build/Graphics/UI/SDL/General_hsc_make.c failed (exit code 1)

I believe Cabal is shelling out to the C compiler at this point, and
the C compiler cannot find the macro SDL_INIT_CDROM...

Have you got the "dev" files for SDL installed - i.e. the C Header files?

Alternatively is SDL_INIT_CDROM a old or new macro in the SDL library
that isn't in the version you have installed?



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

_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners


End of Beginners Digest, Vol 37, Issue 30
*****************************************

Reply via email to