On 3/5/20 2:03 PM, mark wrote:
I want to use the Porter stemming algorithm.
There's a D implementation here:
https://tartarus.org/martin/PorterStemmer/d.txt
The main public function's signature is:
char[] stem(char[] p, int i, int j)
But I work entirely in terms of strings (containing individual words),
so I want to add another function with this signature:
string stem(string word)
I've tried this without success:
public string stem(string word) {
import std.conv: to;
char[] chars = word.to!char[];
int end = chars.length.to!int; > return stem(chars, 0,
end).to!string;
}
Here are just a few of the errors:
src/porterstemmer.d(197,13): Error: cannot implicitly convert expression
s.length of type ulong to int
src/porterstemmer.d(222,9): Error: cannot implicitly convert expression
cast(ulong)this.m_j + s.length of type ulong to int
src/porterstemmer.d(259,12): Error: function
porterstemmer.PorterStemmer.ends(char[] s) is not callable using
argument types (string)
src/porterstemmer.d(259,12): cannot pass argument "sses" of type
string to parameter char[] s
Your code and errors seem to be not related.