这是我第一次在 F# 中进行 a) 函数式编程 b)。
基本上磁盘上有许多文件(n > 50);每个文件存储仪器的读数和读取该读数的时间的时间戳。问题是要根据时间戳对所有文件中的所有读数进行排序。
注意文件很大。每个文件超过 10,000 个条目。
File 1: <12:00, XXX> ; <15:30, XXX> ; <18:20, XXX> ;
File 2: <10:45, XXX> ; <16:20, XXX> ; <16:55, XXX> ;
File 3: <17:50, XXX> ;
第一个 n00b 的事情是在 N 的夹子中获取所有文件中的所有条目,然后使用 F# 的内置排序事物之一。如果我们从每个文件中取出“1”的块,那么File 3: <17:50, XXX>
在取出下一个块时将是未排序的。为了解决这个问题,我们打算检查一个块中的最低和最高时间戳值,并测试它们是否位于前一个或后一个块的范围内。
基本上我仍然在以一种命令式的方式思考(几乎十年的 C 语言就是这样做的)。最近,我玩弄了一种使用 MailboxProcessor 的生产者-消费者方法。
来自经验丰富的 F# 程序员,是否有任何“功能性”和更好的方法来使用 F# 并行排序多文件时间戳?