Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

328
Views
¿Cómo interpolar un int en una cadena con F #?

Estoy probando lo que debería ser una aplicación de ejemplo realmente básica, pero este ejemplo particular de la introducción de F # de MS produce esta advertencia en intellisense:

 Type mismatch. Expecting a ''a -> int' but given a ''a -> unit' The type 'int' does not match the type 'uint'F# Compiler1

de este código: (fwiw, he intentado escribir tanto implícita como explícitamente para sum )

 open System [<EntryPoint>] let main argv = printfn "Welcome to the calculator program" printfn "Type the first number" let firstNo = Console.ReadLine() printfn "Type the second number" let secondNo = Console.ReadLine() printfn "First %s, Second %s" firstNo secondNo let sum: int = 0 printfn "The sum is %i" sum

Luego, cuando compilo, aparece este error, como se esperaba, basado en la advertencia:

 error FS0001: Type mismatch. Expecting a↔ ''a -> int' ↔but given a↔ ''a -> unit' ↔The type 'int' does not match the type 'unit' [C:\Users\user-name\source\repos\MyFSharpApp\MyFSharpApp.fsproj]

Siendo nuevo en F #, no estoy seguro de por qué la función printfn piensa que un int es una unidad y rompe la compilación. Realmente podría usar una explicación y/o enlace (s) a doc (s) de por qué este es el caso y cómo resolverlo.


Editar

Entonces, un punto interesante, incluso cuando elimino la interpolación por completo y solo imprimo una cadena, obtengo el mismo error. Así que no hay int en absoluto, pero la cadena espera un int en lugar de una unidad... pero, ¿por qué? Supongo que tengo algún tipo de error de sintaxis, independientemente de que esto parezca bastante extraño.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Se supone que la función main devuelve un int , que se convertirá en el resultado de la ejecución del programa. La convención es: cero para el éxito, distinto de cero para indicar un código de error (esto no es específico de F#).

Cuando crea un nuevo proyecto con dotnet new , como indican los ejercicios, la función main se genera devolviendo un cero.

Pero como ha confirmado en los comentarios, su función main actualmente no tiene un cero, lo que probablemente significa que la ha eliminado accidentalmente.

Simplemente agregue el cero nuevamente y el error desaparecerá.


En el nuevo y brillante .NET 6, el generador predeterminado genera un punto de entrada implícito en lugar de la buena función main , en cuyo caso no se requiere el valor de retorno, y si desea devolver uno, debe usar la exit función.

Sin embargo, esto claramente no se aplica a la pregunta actual, ya que el generador de OP generó una función main , no un punto de entrada implícito.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!