mirror of
https://github.com/ilyakooo0/Idris-dev.git
synced 2024-11-15 01:25:05 +03:00
af72159e60
Sphinx provides a retargatable documentation system for documentation, and code. Allowing for HTML, LaTeX, and ePub documents to be generated from a single source. ReadTheDocs is a free service for Open Source Projects that provides continuous delivery of documents that use either Sphinx or MakeDoc. This commit provides Sphinx based versions of: + The Idris Tutorial + The Effects Tutorial + Select articles from the Wiki to begin a language reference + Select articles from the Wiki to begin short guides. The examples from the effect tutorial have been integrated as well. In the `docs` folder see `README.md` for dependencies, Sphinx is easily obtainable from all major Linux ditributions and through brew on Mac OS X. + Running `make html` will produce a monolithic html website for use with readthedocs. + Running `make latexpdf` will produce individual PDFs for each of the above tutorials. + Running `make epub` will produce a monolithic epub. This will need to be adapted to either produce one of the above document sets, or individual epubs. Future work will be to: + Integrate idris with readthedocs for documentation generation for tagged released.. + Add latex and html generation to the travis builds. + Add
42 lines
1.3 KiB
Idris
42 lines
1.3 KiB
Idris
module Main
|
|
|
|
import Effects
|
|
import Effect.Exception
|
|
import Effect.StdIO
|
|
|
|
parseNumber : String -> { [EXCEPTION String] } Eff Int
|
|
parseNumber str
|
|
= if all (\x => isDigit x || x == '-') (unpack str)
|
|
then pure (cast str)
|
|
else raise "Not a number"
|
|
|
|
vadd : Vect n Int -> Vect n Int -> Vect n Int
|
|
vadd [] [] = []
|
|
vadd (x :: xs) (y :: ys) = x + y :: vadd xs ys
|
|
|
|
vadd_check : Vect n Int -> Vect m Int ->
|
|
{ [EXCEPTION String] } Eff (Vect m Int)
|
|
vadd_check {n} {m} xs ys with (decEq n m)
|
|
vadd_check {n} {m=n} xs ys | (Yes Refl) = pure (vadd xs ys)
|
|
vadd_check {n} {m} xs ys | (No _) = raise "Length mismatch"
|
|
|
|
read_vec : { [STDIO] } Eff (p ** Vect p Int)
|
|
read_vec = do putStr "Number (-1 when done): "
|
|
case run {m=Maybe} (parseNumber (trim !getStr)) of
|
|
Nothing => do putStrLn "Input error"
|
|
read_vec
|
|
Just v => if (v /= -1)
|
|
then do (_ ** xs) <- read_vec
|
|
pure (_ ** v :: xs)
|
|
else pure (_ ** [])
|
|
|
|
do_vadd : { [STDIO, EXCEPTION String] } Eff ()
|
|
do_vadd = do putStrLn "Vector 1"
|
|
(_ ** xs) <- read_vec
|
|
putStrLn "Vector 2"
|
|
(_ ** ys) <- read_vec
|
|
putStrLn (show !(vadd_check xs ys))
|
|
|
|
main : IO ()
|
|
main = run do_vadd
|