Ошибка несоответствия типов - PullRequest
0 голосов
/ 24 июня 2011

Вот мой код:

open System

let rec gcd a b =
    match b with
        | x when x = 0 -> a
        | _ -> gcd(b, a % b)

let result = gcd 15 10

[<EntryPoint>]
let main(args : string[]) =
    printfn "result = %d" result 
    0

Почему я получаю ошибку с этим кодом:

D:\datahub\Dropbox\development\myprojects\project-euler\Problem_5\problem_5.fs(6,16): error FS0001: Type mismatch. Expec
ting a
    'a
but given a
    int -> 'a
The resulting type would be infinite when unifying ''a' and 'int -> 'a'

1 Ответ

3 голосов
/ 24 июня 2011

Пример пытается разделить аргументы с помощью запятой.В F # несколько аргументов передаются функции, разделяя их пробелами:

let rec gcd a b =
    match b with
        | x when x = 0 -> a
        | _ -> gcd b (a % b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...