2
関数型プログラミングを学びたいので、F#でマージソートを実装しようとしています。しかし、私はこの補助機能のマージに問題があります。うまくいけば、誰かが正しい方向に私を指すことができます。私はF#の初歩的な理解しか持っていないことに留意してください。F#での順序付きリストのマージ、 'a - > a'リストの取得を期待する
let rec merge a b =
match a, b with
|q, [] -> q
|[], p -> p
|q::q', p::p' when q<p -> q::merge q' p::p'
|q::q', p::p' when p<q -> p::merge q::q' p';;
merge [1;3;5;7;9] [2;4;6;8;10];;
コンソール出力:
Uge2.fsx(96,34): error FS0001: Type mismatch. Expecting a
'a
but given a
'a list
The resulting type would be infinite when unifying ''a' and ''a list'
>
Uge2.fsx(99,1): error FS0039: The value or constructor 'merge' is not defined
は、コードに関する任意の提案を歓迎以上です。ご協力いただきありがとうございます!
理にかなう!本当にありがとう。私はaとbが範囲内にあることに気付かなかった。 – Sebastian
@セバスチャンIMHO [F#for Fun&Profit](https://fsharpforfunandprofit.com/troubleshooting-fsharp/)には便利な情報がたくさん入っています – Sehnsucht
確かにそうなります! – Sebastian