WaSh
From HaskellWiki
1 Random Jottings on WASH
Remember all programs must be precompiled with wash2hs before compilation with ghc (there may be some tools to automate this; where?). The executable produced by ghc can be moved to cgi-bin and accessed by the browser with http://localhost/cgi-bin/executableName.
1.1 Hello world programme
from draft user manual, tweaked to work with version 2.10 of 20061206
module Main where import WASH.CGI.CGI hiding (div, head, map, span) main = run mainCGI mainCGI = ask <html> <head><title>Hello World</title></head> <body> <h1>Hello World</h1> </body> </html>
Compile with ghc -pgmF wash2hs -package WashNGo --make Main.
1.2 SELinux
To run ghc-compiled WASH CGI on Fedora (Core 6) you need to build an SELinux policy that allows CGI scripts to execute memory (because ghc runtime system execs mem).
cat <<EOF > local.te
module local 1.0;
require {
class process execmem;
type httpd_sys_script_t;
role system_r;
};
allow httpd_sys_script_t self:process execmem;
EOF
checkmodule -M -m -o local.mod local.te
semodule_package -o local.pp -m local.mod
su -c 'semodule -i local.pp'
