f#

F#define/usa un tipo/módulo en otro archivo en el mismo proyecto



(4)

¿Qué orden tienen los archivos en el proyecto? Stack.fs debe venir antes que Program.fs para Program.fs para poder ''verlo''.

Ver también el comienzo de

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!444.entry

y el final de

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!347.entry

Es de esperar que sea fácil. Tengo un proyecto F # (último F # CTP) con dos archivos (Program.fs, Stack.fs). En Stack.fs tengo un espacio de nombres simple y una definición de tipo

Stack.fs

namespace Col type Stack= ...

Ahora trato de incluir el espacio de nombres en Program.fs declarando

open Col

Esto no funciona y me da el error "El espacio de nombres o el módulo Col no está definido". Sin embargo, está definido dentro del mismo proyecto. Me falta algo obvio


Tuve el mismo problema y de hecho fue el orden de los archivos. Sin embargo, los enlaces anteriores no describen cómo solucionarlo en Visual Studio 2008 F # 1.9.4.19.

Si abre un módulo, asegúrese de que su archivo de origen se encuentre después de la dependencia en el explorador de soluciones. Simplemente haga clic con el botón derecho en su fuente y seleccione Eliminar. Luego vuelve a agregarlo. Esto lo hará aparecer en la parte inferior de la lista. Esperemos que no tenga dependencias circulares.


Tuve los mismos problemas, y tiene razón, el compilador tiene en cuenta el orden de los archivos. En lugar del patrón Eliminar y Agregar, puede usar los elementos Subir / Bajar en el menú contextual asociado a los archivos .fs. (Alt-Up y Alt-Down son las teclas de método abreviado en la mayoría de las combinaciones de teclas estándar)


Todo lo anterior es correcto, pero cómo hacer esto en VS2013 es otra pregunta. Tuve que editar mi archivo .fsproj en Notepad ++ y establecer el orden de un nodo ItemGroup. En este caso, se vería así:

<ItemGroup> <Compile Include="Stack.fs" /> <Compile Include="Program.fs" /> <None Include="App.config" /> </ItemGroup>