bork
authorMart Lubbers <mart@martlubbers.net>
Thu, 6 Sep 2018 11:30:26 +0000 (13:30 +0200)
committerMart Lubbers <mart@martlubbers.net>
Thu, 6 Sep 2018 11:30:26 +0000 (13:30 +0200)
arrayfunctor/test.icl [new file with mode: 0644]
doublylinked/test.icl [new file with mode: 0644]
filepicker/test.icl
maybe-migration/Makefile [new file with mode: 0644]
maybe-migration/test.icl [new file with mode: 0644]

diff --git a/arrayfunctor/test.icl b/arrayfunctor/test.icl
new file mode 100644 (file)
index 0000000..b1eb773
--- /dev/null
@@ -0,0 +1,10 @@
+module test
+
+import StdEnv
+import Data.Functor
+import Data.Array
+import Control.Applicative
+import Control.Monad
+
+Start :: {Int}
+Start = (+) <$> {1,2} <*> {1,2,3,4} >>= \e->pure (e+1)
diff --git a/doublylinked/test.icl b/doublylinked/test.icl
new file mode 100644 (file)
index 0000000..877bfb1
--- /dev/null
@@ -0,0 +1,33 @@
+module test
+
+:: DList a = Nil | Cons a (Link (DList a))
+:: Link a = {prev :: a, next :: a}
+
+fromList :: ([a] -> DList a)
+fromList = go Nil
+where
+       go :: (DList a) [a] -> DList a
+       go prev [] = Nil
+       go prev [a:as] =
+               let head = Cons a {prev=prev,next=tail}
+                   tail = go head as
+               in head
+
+toList :: (DList a) -> [a]
+toList Nil = []
+toList (Cons el {next}) = [el:toList next]
+
+nil :: DList a
+nil = Nil
+
+(:!) infixr 0 :: a (DList a) -> DList a
+(:!) elh Nil = Cons elh {prev=nil,next=nil}
+(:!) elh (Cons elt link) =
+       let tail = Cons elt {link & prev=head}
+           head = Cons elh {prev=nil,next=tail}
+       in head
+
+Start =
+       (toList (1 :! 2 :! 3 :! nil)
+       ,toList (fromList [1,2,3])
+       )
index e1989a7..4ae8838 100644 (file)
@@ -20,7 +20,7 @@ import System.Directory
 import Text.GenPrint
 import iTasks => qualified >>=, >>|, forever, sequence, return
 
-derive class iTask RTree, ChoiceNode
+derive class iTask RTree, ChoiceNode, FileInfo, Tm
 
 Start w = startEngine (selectFile "/opt/clean/lib/StdLib" () False) w
 
@@ -36,20 +36,20 @@ where
        toChoiceNode :: (Int a -> ChoiceNode) -> ((RTree (Int, a)) -> ChoiceNode)
        toChoiceNode tfun = foldTree \a cs->{ChoiceNode | uncurry tfun a & children=cs}
        
-       fp2cn :: Int (FilePath, Bool) -> ChoiceNode
-       fp2cn i (fp, bool) = {id =if bool (~i) i,label=dropDirectory fp,icon=Nothing,expanded=False,children=[]}
+       fp2cn :: Int (FilePath, FileInfo) -> ChoiceNode
+       fp2cn i (fp, fi) = {id =if fi.directory (~i) i,label=dropDirectory fp,icon=Nothing,expanded=False,children=[]}
 
-       fromTree :: (RTree (Int, (FilePath, Bool))) [Int] -> [FilePath]
+       fromTree :: (RTree (Int, (FilePath, a))) [Int] -> [FilePath]
        fromTree tree sel = [f\\(i, (f, _))<-leafs tree | isMember i sel]
 
-recurseDirectory :: !FilePath !FilePath !*World -> *(MaybeOSError (RTree (FilePath, Bool)), !*World)
+recurseDirectory :: !FilePath !FilePath !*World -> *(MaybeOSError (RTree (FilePath, FileInfo)), !*World)
 recurseDirectory acc fp w
        # fp = acc </> fp
        # (mfi, w) = getFileInfo fp w
        | isError mfi = (liftError mfi, w)
        # (Ok fi) = mfi
-       | not fi.directory = (Ok $ RNode (fp, False) [], w)
+       | not fi.directory = (Ok $ RNode (fp, fi) [], w)
        # (mcs, w) = readDirectory fp w
        | isError mfi = (liftError mcs, w)
        # (cs, w) = appFst sequence $ mapSt (recurseDirectory fp) (filter (\c->not (elem c [".", ".."])) (fromOk mcs)) w
-       = (RNode (fp, True) <$> cs, w)
+       = (RNode (fp, fi) <$> cs, w)
diff --git a/maybe-migration/Makefile b/maybe-migration/Makefile
new file mode 100644 (file)
index 0000000..83f7745
--- /dev/null
@@ -0,0 +1,4 @@
+all:
+       mkdir -p Clean\ System\ Files
+       gcc -c test.c -o test.o
+       clm -l test.o -dynamics -IL Dynamics test -o test
diff --git a/maybe-migration/test.icl b/maybe-migration/test.icl
new file mode 100644 (file)
index 0000000..0e008e7
--- /dev/null
@@ -0,0 +1,7 @@
+module test
+
+import Control.Applicative
+import Data.Foldable
+import Data.Monoid
+
+Start = 42