Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,71 @@
|
|||
(*
|
||||
** This one is
|
||||
** translated into ATS from the Ocaml entry
|
||||
*)
|
||||
|
||||
(* ****** ****** *)
|
||||
//
|
||||
// How to compile:
|
||||
// patscc -DATS_MEMALLOC_LIBC -o maxsubseq maxsubseq.dats
|
||||
//
|
||||
(* ****** ****** *)
|
||||
//
|
||||
#include
|
||||
"share/atspre_staload.hats"
|
||||
//
|
||||
(* ****** ****** *)
|
||||
|
||||
typedef ints = List0(int)
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
fun
|
||||
maxsubseq
|
||||
(xs: ints): (int, ints) = let
|
||||
//
|
||||
fun
|
||||
loop
|
||||
(
|
||||
sum: int, seq: ints
|
||||
, maxsum: int, maxseq: ints, xs: ints
|
||||
) : (int, ints) =
|
||||
(
|
||||
case+ xs of
|
||||
| nil () =>
|
||||
(
|
||||
maxsum
|
||||
, list_vt2t(list_reverse(maxseq))
|
||||
) (* end of [nil] *)
|
||||
| cons (x, xs) => let
|
||||
val sum = sum + x
|
||||
and seq = cons (x, seq)
|
||||
in
|
||||
if sum < 0
|
||||
then loop (0, nil, maxsum, maxseq, xs)
|
||||
else (
|
||||
if sum > maxsum
|
||||
then loop (sum, seq, sum, seq, xs)
|
||||
else loop (sum, seq, maxsum, maxseq, xs)
|
||||
) (* end of [else] *)
|
||||
end // end of [cons]
|
||||
)
|
||||
//
|
||||
in
|
||||
loop (0, nil, 0, nil, xs)
|
||||
end // end of [maxsubseq]
|
||||
|
||||
implement
|
||||
main0 () = () where
|
||||
{
|
||||
val
|
||||
(maxsum
|
||||
,maxseq) =
|
||||
maxsubseq
|
||||
(
|
||||
$list{int}(~1,~2,3,5,6,~2,~1,4,~4,2,~1)
|
||||
)
|
||||
//
|
||||
val () = println! ("maxsum = ", maxsum)
|
||||
val () = println! ("maxseq = ", maxseq)
|
||||
//
|
||||
} (* end of [main0] *)
|
||||
Loading…
Add table
Add a link
Reference in a new issue