more official status of sequential implementations;
authorwenzelm
Thu, 01 Oct 2009 18:21:11 +0200
changeset 328255db89f8d44f3
parent 32824 1a5e364584ae
child 32826 4ed308181f7f
more official status of sequential implementations;
tuned;
src/Pure/Concurrent/par_list_dummy.ML
src/Pure/Concurrent/par_list_sequential.ML
src/Pure/Concurrent/synchronized_dummy.ML
src/Pure/Concurrent/synchronized_sequential.ML
src/Pure/IsaMakefile
src/Pure/ROOT.ML
     1.1 --- a/src/Pure/Concurrent/par_list_dummy.ML	Thu Oct 01 18:10:41 2009 +0200
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,16 +0,0 @@
     1.4 -(*  Title:      Pure/Concurrent/par_list_dummy.ML
     1.5 -    Author:     Makarius
     1.6 -
     1.7 -Dummy version of parallel list combinators -- plain sequential evaluation.
     1.8 -*)
     1.9 -
    1.10 -structure Par_List: PAR_LIST =
    1.11 -struct
    1.12 -
    1.13 -val map = map;
    1.14 -val get_some = get_first;
    1.15 -val find_some = find_first;
    1.16 -val exists = exists;
    1.17 -val forall = forall;
    1.18 -
    1.19 -end;
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/src/Pure/Concurrent/par_list_sequential.ML	Thu Oct 01 18:21:11 2009 +0200
     2.3 @@ -0,0 +1,16 @@
     2.4 +(*  Title:      Pure/Concurrent/par_list_sequential.ML
     2.5 +    Author:     Makarius
     2.6 +
     2.7 +Dummy version of parallel list combinators -- plain sequential evaluation.
     2.8 +*)
     2.9 +
    2.10 +structure Par_List: PAR_LIST =
    2.11 +struct
    2.12 +
    2.13 +val map = map;
    2.14 +val get_some = get_first;
    2.15 +val find_some = find_first;
    2.16 +val exists = exists;
    2.17 +val forall = forall;
    2.18 +
    2.19 +end;
     3.1 --- a/src/Pure/Concurrent/synchronized_dummy.ML	Thu Oct 01 18:10:41 2009 +0200
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,25 +0,0 @@
     3.4 -(*  Title:      Pure/Concurrent/synchronized_dummy.ML
     3.5 -    Author:     Makarius
     3.6 -
     3.7 -Dummy version of state variables -- plain refs for sequential access.
     3.8 -*)
     3.9 -
    3.10 -structure Synchronized: SYNCHRONIZED =
    3.11 -struct
    3.12 -
    3.13 -datatype 'a var = Var of 'a Unsynchronized.ref;
    3.14 -
    3.15 -fun var _ x = Var (Unsynchronized.ref x);
    3.16 -fun value (Var var) = ! var;
    3.17 -
    3.18 -fun timed_access (Var var) _ f =
    3.19 -  (case f (! var) of
    3.20 -    SOME (y, x') => (var := x'; SOME y)
    3.21 -  | NONE => Thread.unavailable ());
    3.22 -
    3.23 -fun guarded_access var f = the (timed_access var (K NONE) f);
    3.24 -
    3.25 -fun change_result var f = guarded_access var (SOME o f);
    3.26 -fun change var f = change_result var (fn x => ((), f x));
    3.27 -
    3.28 -end;
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/src/Pure/Concurrent/synchronized_sequential.ML	Thu Oct 01 18:21:11 2009 +0200
     4.3 @@ -0,0 +1,27 @@
     4.4 +(*  Title:      Pure/Concurrent/synchronized_sequential.ML
     4.5 +    Author:     Makarius
     4.6 +
     4.7 +Sequential version of state variables -- plain refs.
     4.8 +*)
     4.9 +
    4.10 +structure Synchronized: SYNCHRONIZED =
    4.11 +struct
    4.12 +
    4.13 +abstype 'a var = Var of 'a Unsynchronized.ref
    4.14 +with
    4.15 +
    4.16 +fun var _ x = Var (Unsynchronized.ref x);
    4.17 +fun value (Var var) = ! var;
    4.18 +
    4.19 +fun timed_access (Var var) _ f =
    4.20 +  (case f (! var) of
    4.21 +    SOME (y, x') => (var := x'; SOME y)
    4.22 +  | NONE => Thread.unavailable ());
    4.23 +
    4.24 +fun guarded_access var f = the (timed_access var (K NONE) f);
    4.25 +
    4.26 +fun change_result var f = guarded_access var (SOME o f);
    4.27 +fun change var f = change_result var (fn x => ((), f x));
    4.28 +
    4.29 +end;
    4.30 +end;
     5.1 --- a/src/Pure/IsaMakefile	Thu Oct 01 18:10:41 2009 +0200
     5.2 +++ b/src/Pure/IsaMakefile	Thu Oct 01 18:21:11 2009 +0200
     5.3 @@ -45,8 +45,8 @@
     5.4  $(OUT)/Pure: $(BOOTSTRAP_FILES) Concurrent/future.ML			\
     5.5    Concurrent/lazy.ML Concurrent/lazy_sequential.ML			\
     5.6    Concurrent/mailbox.ML Concurrent/par_list.ML				\
     5.7 -  Concurrent/par_list_dummy.ML Concurrent/simple_thread.ML		\
     5.8 -  Concurrent/synchronized.ML Concurrent/synchronized_dummy.ML		\
     5.9 +  Concurrent/par_list_sequential.ML Concurrent/simple_thread.ML		\
    5.10 +  Concurrent/synchronized.ML Concurrent/synchronized_sequential.ML	\
    5.11    Concurrent/task_queue.ML General/alist.ML General/antiquote.ML	\
    5.12    General/balanced_tree.ML General/basics.ML General/binding.ML		\
    5.13    General/buffer.ML General/file.ML General/graph.ML General/heap.ML	\
     6.1 --- a/src/Pure/ROOT.ML	Thu Oct 01 18:10:41 2009 +0200
     6.2 +++ b/src/Pure/ROOT.ML	Thu Oct 01 18:21:11 2009 +0200
     6.3 @@ -57,8 +57,8 @@
     6.4  
     6.5  use "Concurrent/simple_thread.ML";
     6.6  use "Concurrent/synchronized.ML";
     6.7 -if Multithreading.available then () else
     6.8 -use "Concurrent/synchronized_dummy.ML";
     6.9 +if Multithreading.available then ()
    6.10 +else use "Concurrent/synchronized_sequential.ML";
    6.11  use "Concurrent/mailbox.ML";
    6.12  use "Concurrent/task_queue.ML";
    6.13  use "Concurrent/future.ML";
    6.14 @@ -67,7 +67,7 @@
    6.15  else use "Concurrent/lazy_sequential.ML";
    6.16  use "Concurrent/par_list.ML";
    6.17  if Multithreading.available then ()
    6.18 -else use "Concurrent/par_list_dummy.ML";
    6.19 +else use "Concurrent/par_list_sequential.ML";
    6.20  
    6.21  
    6.22  (* fundamental structures *)