Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec eachindex (size : NTuple) =
- let n = NTuple.getLength size
- if n = 1 then
- let x = NTuple.head size
- <@@ seq { 0..%x-1 } @@>
- else
- let x = NTuple.head size
- let xs = NTuple.tail size
- let expr = eachindex xs
- let tupleType = NTuple.makeType n
- let tupleTypePred = NTuple.makeType (n - 1)
- let init count initializer = callT tupleType <@@ Seq.init @@> [count; initializer]
- let concatMap mapping source = callTR tupleTypePred tupleType <@@ Seq.concatMap @@> [mapping; source]
- expr |> concatMap (lambdaT tupleTypePred
- (fun smallTupleExpr ->
- let smallTuple = NTuple.fromExpr smallTupleExpr
- init x (lambda (fun i ->
- NTuple.append smallTuple i |> NTuple.toExpr) )))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement