@@ -30,7 +30,7 @@ public static Seq<int> insertSort(int value, Seq<int> sorted) =>
3030 public static void recurIsSameAsBind < M > ( Func < K < M , int > , K < M , int > , bool > ? equals = null )
3131 where M : Monad < M >
3232 {
33- var example = toSeq ( Range ( 1 , 40000 ) ) . Strict ( ) ;
33+ var example = toSeq ( Range ( 1 , 20000 ) ) . Strict ( ) ;
3434
3535 Console . ForegroundColor = ConsoleColor . Yellow ;
3636 Console . WriteLine ( "------------------------------------------------------------------------------------------" ) ;
@@ -72,15 +72,24 @@ public static void recurIsSameAsBind<M>(Func<K<M, int>, K<M, int>, bool>? equals
7272 K < M , Next < ( int Total , Seq < int > Values ) , int > > sumTail ( ( int Total , Seq < int > Values ) pair ) =>
7373 pair . Values switch
7474 {
75- [ ] => M . Pure ( Next . Done < ( int , Seq < int > ) , int > ( pair . Total ) ) ,
76- var ( x , xs ) => M . Pure ( Next . Loop < ( int , Seq < int > ) , int > ( ( pair . Total + x , xs ) ) )
75+ [ ] => M . Done < ( int , Seq < int > ) , int > ( pair . Total ) ,
76+ var ( x , xs ) => M . Loop < ( int , Seq < int > ) , int > ( ( pair . Total + x , xs ) )
7777 } ;
7878
79+
80+ K < M , Next < ( int Total , Seq < int > Values ) , int > > sumTail2 ( ( int Total , Seq < int > Values ) pair ) =>
81+ pair . Values switch
82+ {
83+ [ ] => M . Done < ( int , Seq < int > ) , int > ( pair . Total ) ,
84+ var ( x , xs ) => M . Loop < ( int , Seq < int > ) , int > ( ( pair . Total + x , xs ) )
85+ } ;
86+
7987 K < M , int > sumNoTail ( Seq < int > values ) =>
8088 values switch
8189 {
82- [ var x ] => M . Pure ( x ) ,
83- var ( x , xs ) => sumNoTail ( xs ) * ( t => x + t )
90+ [ ] => M . Pure ( 0 ) ,
91+ var ( x , xs ) => from t in sumNoTail ( xs )
92+ select t + x
8493 } ;
8594 }
8695}
0 commit comments