Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec ArrayToFlatArray arr : ('a [] * int64 []) =
- let checkRegularity arrs : unit =
- if Array.length arrs = 0
- then failwith "Empty array"
- let head = Array.head arrs
- if not <| Array.forall (fun l -> l = head) arrs
- then failwith "Irregular array"
- let subType = (Array.head arr).GetType()
- if subType.IsArray
- then
- let a = Array.map ArrayToFlatArray arr
- let (subarrs, lens) = Array.unzip a
- checkRegularity lens
- let subarrs' = Array.concat subarrs
- let lens' = Array.head lens
- let len_subarrs = int64 <| Array.length arr
- let lens_out = Array.append [|len_subarrs|] lens'
- (subarrs', lens_out)
- else
- (arr, [|int64 <| Array.length arr|])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement