@@ -1587,6 +1587,35 @@ let private listModule
15871587 | " OfArray" , [ arr ] -> derefArr r arr |> Some
15881588 | " OfSeq" , [ seq ] -> emitExpr r t [ seq ] " fable_utils:to_list($0)" |> Some
15891589 | " ToSeq" , [ list ] -> Some( List.head args)
1590+ | " RandomShuffleBy" , [ randomizer; list ] ->
1591+ Helper.LibCall( com, " fable_list" , " random_shuffle_by" , t, [ randomizer; list ])
1592+ |> Some
1593+ | " RandomShuffleWith" , [ random; list ] ->
1594+ Helper.LibCall( com, " fable_list" , " random_shuffle_with" , t, [ random; list ])
1595+ |> Some
1596+ | " RandomShuffle" , [ list ] -> Helper.LibCall( com, " fable_list" , " random_shuffle" , t, [ list ]) |> Some
1597+ | " RandomChoiceBy" , [ randomizer; list ] ->
1598+ Helper.LibCall( com, " fable_list" , " random_choice_by" , t, [ randomizer; list ])
1599+ |> Some
1600+ | " RandomChoiceWith" , [ random; list ] ->
1601+ Helper.LibCall( com, " fable_list" , " random_choice_with" , t, [ random; list ])
1602+ |> Some
1603+ | " RandomChoice" , [ list ] -> Helper.LibCall( com, " fable_list" , " random_choice" , t, [ list ]) |> Some
1604+ | " RandomChoicesBy" , [ randomizer; count; list ] ->
1605+ Helper.LibCall( com, " fable_list" , " random_choices_by" , t, [ randomizer; count; list ])
1606+ |> Some
1607+ | " RandomChoicesWith" , [ random; count; list ] ->
1608+ Helper.LibCall( com, " fable_list" , " random_choices_with" , t, [ random; count; list ])
1609+ |> Some
1610+ | " RandomChoices" , [ count; list ] ->
1611+ Helper.LibCall( com, " fable_list" , " random_choices" , t, [ count; list ]) |> Some
1612+ | " RandomSampleBy" , [ randomizer; count; list ] ->
1613+ Helper.LibCall( com, " fable_list" , " random_sample_by" , t, [ randomizer; count; list ])
1614+ |> Some
1615+ | " RandomSampleWith" , [ random; count; list ] ->
1616+ Helper.LibCall( com, " fable_list" , " random_sample_with" , t, [ random; count; list ])
1617+ |> Some
1618+ | " RandomSample" , [ count; list ] -> Helper.LibCall( com, " fable_list" , " random_sample" , t, [ count; list ]) |> Some
15901619 | _ -> None
15911620
15921621/// Beam-specific FSharpList instance method replacements.
@@ -2119,6 +2148,91 @@ let private arrayModule
21192148 let a1 = derefArr r a1
21202149 let a2 = derefArr r a2
21212150 Helper.LibCall( com, " fable_list" , " compare_with" , t, [ fn; a1; a2 ]) |> Some
2151+ | " RandomShuffleBy" , [ randomizer; arr ] ->
2152+ let lst = derefArr r arr
2153+
2154+ Helper.LibCall( com, " fable_list" , " random_shuffle_by" , t, [ randomizer; lst ])
2155+ |> wrapArr com r t
2156+ |> Some
2157+ | " RandomShuffleWith" , [ random; arr ] ->
2158+ let lst = derefArr r arr
2159+
2160+ Helper.LibCall( com, " fable_list" , " random_shuffle_with" , t, [ random; lst ])
2161+ |> wrapArr com r t
2162+ |> Some
2163+ | " RandomShuffle" , [ arr ] ->
2164+ let lst = derefArr r arr
2165+
2166+ Helper.LibCall( com, " fable_list" , " random_shuffle" , t, [ lst ])
2167+ |> wrapArr com r t
2168+ |> Some
2169+ | " RandomShuffleInPlaceBy" , [ randomizer; arr ] ->
2170+ let lst = derefArr r arr
2171+
2172+ let shuffled =
2173+ Helper.LibCall( com, " fable_list" , " random_shuffle_by" , Any, [ randomizer; lst ])
2174+
2175+ emitExpr r t [ arr; shuffled ] " begin erlang:put($0, $1), ok end" |> Some
2176+ | " RandomShuffleInPlaceWith" , [ random; arr ] ->
2177+ let lst = derefArr r arr
2178+
2179+ let shuffled =
2180+ Helper.LibCall( com, " fable_list" , " random_shuffle_with" , Any, [ random; lst ])
2181+
2182+ emitExpr r t [ arr; shuffled ] " begin erlang:put($0, $1), ok end" |> Some
2183+ | " RandomShuffleInPlace" , [ arr ] ->
2184+ let lst = derefArr r arr
2185+ let shuffled = Helper.LibCall( com, " fable_list" , " random_shuffle" , Any, [ lst ])
2186+ emitExpr r t [ arr; shuffled ] " begin erlang:put($0, $1), ok end" |> Some
2187+ | " RandomChoiceBy" , [ randomizer; arr ] ->
2188+ let lst = derefArr r arr
2189+
2190+ Helper.LibCall( com, " fable_list" , " random_choice_by" , t, [ randomizer; lst ])
2191+ |> Some
2192+ | " RandomChoiceWith" , [ random; arr ] ->
2193+ let lst = derefArr r arr
2194+
2195+ Helper.LibCall( com, " fable_list" , " random_choice_with" , t, [ random; lst ])
2196+ |> Some
2197+ | " RandomChoice" , [ arr ] ->
2198+ let lst = derefArr r arr
2199+ Helper.LibCall( com, " fable_list" , " random_choice" , t, [ lst ]) |> Some
2200+ | " RandomChoicesBy" , [ randomizer; count; arr ] ->
2201+ let lst = derefArr r arr
2202+
2203+ Helper.LibCall( com, " fable_list" , " random_choices_by" , t, [ randomizer; count; lst ])
2204+ |> wrapArr com r t
2205+ |> Some
2206+ | " RandomChoicesWith" , [ random; count; arr ] ->
2207+ let lst = derefArr r arr
2208+
2209+ Helper.LibCall( com, " fable_list" , " random_choices_with" , t, [ random; count; lst ])
2210+ |> wrapArr com r t
2211+ |> Some
2212+ | " RandomChoices" , [ count; arr ] ->
2213+ let lst = derefArr r arr
2214+
2215+ Helper.LibCall( com, " fable_list" , " random_choices" , t, [ count; lst ])
2216+ |> wrapArr com r t
2217+ |> Some
2218+ | " RandomSampleBy" , [ randomizer; count; arr ] ->
2219+ let lst = derefArr r arr
2220+
2221+ Helper.LibCall( com, " fable_list" , " random_sample_by" , t, [ randomizer; count; lst ])
2222+ |> wrapArr com r t
2223+ |> Some
2224+ | " RandomSampleWith" , [ random; count; arr ] ->
2225+ let lst = derefArr r arr
2226+
2227+ Helper.LibCall( com, " fable_list" , " random_sample_with" , t, [ random; count; lst ])
2228+ |> wrapArr com r t
2229+ |> Some
2230+ | " RandomSample" , [ count; arr ] ->
2231+ let lst = derefArr r arr
2232+
2233+ Helper.LibCall( com, " fable_list" , " random_sample" , t, [ count; lst ])
2234+ |> wrapArr com r t
2235+ |> Some
21222236 // === Transform ops: deref input(s) AND wrap result ===
21232237 | " Map" , [ fn; arr ] ->
21242238 let arr = derefArr r arr
0 commit comments