Advertisement
Guest User

Untitled

a guest
Jun 8th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.80 KB | None | 0 0
  1.   let rec ArrayToFlatArray arr : ('a [] * int64 []) =
  2.     let checkRegularity arrs : unit =
  3.        if Array.length arrs = 0
  4.        then failwith "Empty array"
  5.        
  6.        let head = Array.head arrs
  7.        if not <| Array.forall (fun l -> l = head) arrs
  8.        then failwith "Irregular array"
  9.        
  10.     let subType = (Array.head arr).GetType()
  11.     if subType.IsArray
  12.     then
  13.        let a = Array.map ArrayToFlatArray arr
  14.        let (subarrs, lens) = Array.unzip a
  15.        checkRegularity lens
  16.        let subarrs' = Array.concat subarrs
  17.         let lens' = Array.head lens
  18.        let len_subarrs = int64 <| Array.length arr
  19.        let lens_out = Array.append [|len_subarrs|] lens'
  20.         (subarrs', lens_out)
  21.      else
  22.        (arr, [|int64 <| Array.length arr|])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement