我试图使用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#比较新,所以我能得到的任何帮助都会非常感激!
答案 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
(适用于数组)。