F#在字符串数组上使用List.map

时间:2015-10-25 18:38:02

标签: lambda f# functional-programming

我试图使用F#的List.map函数调用我在数组中的每个字符串上写的函数。这是我写的功能

(*Takes a string and filters it down to common text characters*)
let filterWord wordToFilter = 
    Regex.Replace(wordToFilter, "[^a-zA-Z0-9/!\'?.-]", "");

这是我称之为

的主要方法
(*Main method of the program*)
[<EntryPoint>]
let main argsv =
    let input = File.ReadAllText("Alice in Wonderland.txt"); //Reads all the text into a single string
    let unfilteredWords = input.Split(' ');
    let filteredWords = unfilteredWords |> List.map(fun x -> filterWord(x));
    0;

问题是我在List.map调用中遇到语法错误

Error       Type mismatch. Expecting a
    string [] -> 'a    
but given a
    'b list -> 'c list    
The type 'string []' does not match the type ''a list'  

将input.split更改为硬编码字符串数组会修复错误,因此它与F#无关,无法实现input.split可以与map函数一起使用,因为它是一个字符串数组。我只是不知道如何更改代码,以便完成我想要完成的任务。我对F#比较新,所以我能得到的任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:4)

  

F#没有意识到input.split的结果可以和map函数一起使用,因为它是一个字符串数组

int[] ids = new int[]{...R.id.oniki3,R.id.onuc3,R.id.ondort2,R.id.ondort3 }; 适用于List.map,因此F#意识到无法list一起使用。请改用Array.map(适用于数组)。