Я пишу заявку на замену нашего отдела технической поддержки.Когда клиенту нужна техническая поддержка, мы просто отправим ему дискету с этим приложением, которую он может просто вставить в отверстие своего компьютера и установить.Они просто набирают свою проблему, и программа выводит решение.
Я пытался написать это на F #, но F # это не нравится.Я написал эту простую рекурсивную функцию, которая показывает приветственное сообщение клиенту, но F # говорит мне «нет, этот код плохой».Я совершенно уверен, что мой код хорош, и не могу понять, почему F # считает, что это так плохо.
Это мой код:
open System
let rec GreetCustomer message =
let DisplayMessage message =
Console.WriteLine(message + " " : string) |> ignore
GreetCustomer
DisplayMessage(x)
Console.WriteLine("Please do the needful by telling us your name?");
let CustomerName = Console.ReadLine()
GreetCustomer("Hello,")(CustomerName)("!")("How")("to")("help")("you")("today?")
, а F # говорит мне
Несоответствие типов.Ожидая a, но учитывая a b -> a Полученный тип будет бесконечным при объединении 'a' и '' b -> 'a'
Конечно, результирующий тип бесконечен,Я хочу иметь возможность связывать вызовы метода бесконечное количество раз.Я не понимаю, почему F # не любит бесконечные типы;Я могу написать ту же программу на Javascript без каких-либо проблем:
GreetCustomer = function(message) {
DisplayMessage = function(message) {
document.write(message + " ");
return GreetCustomer;
};
return DisplayMessage(message);
};
CustomerName = prompt("Please do the needful by telling us your name?");
GreetCustomer("Hello,")(CustomerName)("!")("How")("to")("help")("you")("today?");
, и она имеет именно тот вывод, который я хочу:
Здравствуйте, Питер!Как помочь вам сегодня?
Если это работает в Javascript, наверняка должен быть способ сделать это в F #.
Как я могу исправить свою программу F #, чтобы она победилане жалуетесь на бесконечные типы?