[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Literate Programming in Org-Mode
From: |
Emre Sahin |
Subject: |
[Orgmode] Literate Programming in Org-Mode |
Date: |
Fri, 22 Jun 2007 19:45:33 +0300 |
User-agent: |
Gnus/5.110006 (No Gnus v0.6) Emacs/22.1.50 (gnu/linux) |
Hi all,
Do any of you use org-mode for literate programming? I think that
would be a very natural use of org-mode.
Support in other compilers may be minimal, but one can write a
Literate Haskell program in org-mode without any changes I
think. E.g. (a meaningless program from Haskell wikibook)
* Preamble
** Module Definition
> module YourModule where
** Imports
*** import only the functions toLower and toUpper from Data.Char
> import Data.Char (toLower, toUpper)
*** import everything exported from Data.List
> import Data.List
*** import everything exported from MyModule
> import MyModule
* Functions
** put a c in front of the text
> someFunction :: String -> String
> someFunction text = 'c' : text
** build a string of c's using someFunction
> stringOfCs :: String -> String
> stringOfCs = (someFunction "") : stringOfCs
** etc
* Input and output
> main = do
> putStrLn "Please enter your name: "
> name <- getLine
> putStrLn ("Hello, " ++ (someFunction name) ++ ", how are you?")
In Literate Haskell, program lines start with a >. If it's not used,
than the line is considered as a comment line, hence making org-mode
useful in folding, maintainin TODOs etc. (This message is already a
Literate Haskell program.) Currently, one can use Literate Haskell
major mode during compilation and writing codes and org-mode during
general overview for the program. Writing first the documentation and
pseudocode of the program in org-mode and then filling the "gaps" with
code may result in better programs. (You can see
http://www.haskell.org/onlinereport/literate.html for literate
comments in Haskell.)
This can give an idea how org-mode can be employed for writing
programs. Developing some functionality to consider lines starting
with > (or any other character) as a code line and syntax highlighting
and feeding these to a compiler may ease things. Currently one can
switch back and forth to the language major mode and org-mode (or use
multiple major mode packs, but I didn't try them) but a support for
code lines (for any programming language) may result in one of the
best Literate Programming tools out there, I think. (Ability to use
LaTeX in org-mode already makes it very useful for LP.)
I don't know if anybody considered this, but using org-mode as a
"super mode" for programming major modes seems a good idea.
Best regards,
Emre
- [Orgmode] Literate Programming in Org-Mode,
Emre Sahin <=