Futhark语言

Futhark是一个函数式、数据并行、阵列编程语言，最初于哥本哈根大学（DIKU）作为HIPERFIT（财务信息技术的函数式高性能计算）计划的一部份而开发。它聚焦于确使以函数式风格书写的数据并行程序，可以高性能的执行于大规模并行硬件上，特别是在GPU上。Futhark强烈的受到启发，但是为了确使更具进取性的编译器优化，对如何表达并行施加了约束。特别是，不支持非正规的嵌套数据并行。

概述
Futhark是属于ML家族的语言，它具有从OCaml、Standard ML和Haskell派生的缩进不敏感的语法。类型系统基于了，还并具有各种扩展，比如和大小依赖类型。Futhark不意图成为编写完全应用的通用编程语言，转而聚焦于书写计算“内核”（不必定相同于GPU内核），它们由用常规语言书写的应用程序来调用。

例子
点积
下列程序计算包含双精度数值的两个向量的点积：
def dotprod xs ys = f64.sum (map2 (*) xs ys))

它还可以等价的书写为具有显式类型标注的形式：
def dotprod [n] (xs: [n]f64) (ys: [n]f64) : f64 = f64.sum (map2 (*) xs ys))

这制作出了大小依赖类型，即这个函数只能以相同大小的两个数组来调用，类型检查器会拒绝不能静态的确定符合这个要求的任何程序。

矩阵乘法
下列程序使用上述点积定义进行矩阵乘法：
def matmul [n][m][p] (A: [n][m]f64) (B: [m][p]f64) : [n][p]f64 =
  map (\A_row ->
         map (\B_col -> dotprod A_row B_col)
             (transpose B))
      A

注意它的类型强制这个函数只能以具有相容大小的矩阵来调用。进一步的说，这是嵌套数据并行的例子。

 引用 

Category:函数式编程语言
Category:ML语言家族
Category:阵列编程语言
Category:GPGPU