我在回答这个问题之后得到了一个新问题.将参数从页面传递到ActiveX
如何在没有class explorer的情况下将属性添加到属性映射?
需要为对象和类资源管理器添加属性不起作用,因为Nemerle尚不支持它.
码:
<object id="DBTableRepX"
classid="CLSID:CA8B72B3-3B15-40D7-9364-478E25AF5B41"
codebase="DBTableRepX.cab"
style="
Z-INDEX: 102; LEFT: 20px; WIDTH: 1200px;
POSITION: absolute; TOP: 80px; HEIGHT: 600px">
<param name="ax_Command" value='<%=GetText()%>'/>
</object>
Run Code Online (Sandbox Code Playgroud) 像Haskell(或Nemerle)这样的语言有quasiquotations.我想知道"准"是什么意思,如果没有"准"部分也存在"引用".
haskell programming-languages metaprogramming quoting nemerle
在我的TODO中获得了新项目,无法选择F#或Nemerle.
我目前正在学习F#并在Nemerle上有一些项目.
我喜欢F#方式,我喜欢默认缩进(我也希望默认缩进为nemerle2),我喜欢F#的许多功能和魔力,但是没有宏.
F#的目标是VS2010,也许(可能)更大的开发团队,它看起来像Haskell(可以用它创建轻松的Linux程序,它很有趣).
Nemerle的目标是宏,我想我更喜欢Nemerle的一些语法.
而且大多数人都喜欢C#......
就像我喜欢(Nemerle)
match(STT)
| 1 with st= "Summ"
| 2 with st= "AVG" =>
$"$st : $(summbycol(counter,STT))"
Run Code Online (Sandbox Code Playgroud)
更多(F#)
let (|Let|) v e = (v, e)
match stt with
| Let "Summ" (st, 1)
| Let "AVG" (st, 2) -> srintf "%s ..." st
Run Code Online (Sandbox Code Playgroud)
F# :
["A"; "B"] |> List.iter (fun s -> printfn "%d" s.Length)
Run Code Online (Sandbox Code Playgroud)
Nemerle:
["A", "B"].Iter(x => printf("%d", x.Length))
Run Code Online (Sandbox Code Playgroud)
F#(希望不要误会):
let type X =
let mytable a = …
Run Code Online (Sandbox Code Playgroud) 很长一段时间以来,我一直在尝试使用不同的语言来查找我想要的功能集,而我却找不到它.我的语言非常适合我的各种项目,但我想出了这些语言的交集,这使我能用一种语言完成99.9%的项目.我想要以下内容:
我一直在使用的两种主要语言是Boo和Nemerle,但我也玩过F#.
针对Nemerle的主要投诉:编译器有可怕的错误报告,实现是错误的,因为地狱(编译器和库),宏只能在函数内部或作为属性应用,并且它是相当重的依赖性(虽然不够,它是一个交易破坏者).
针对Boo的主要投诉:没有任意表达式嵌套(dealbreaker),宏很难写,没有自定义运算符定义(潜在的交易破坏者).
针对F#的主要投诉:难看的语法,难以理解的元编程,非自由许可(epic dealbreaker).
所以我想的越多,我就越想开发自己的语言.
优点:
缺点:
因此,基于所有这些,一般的共识是什么 - 这是一个好主意还是一个坏主意?或许更有帮助,我是否错过了任何重大利弊?
编辑:忘记添加嵌套示例 - 这是Nemerle中的一个案例:
def foo =
if(bar == 5)
match(baz) { | "foo" => 1 | _ => 0 }
else bar;
Run Code Online (Sandbox Code Playgroud)
编辑#2:想象一下如果存在将转换为该语言的代码类型的例子并不会受到影响(单独的S.Lott的回答可能足以让我远离这样做).代码大量使用自定义语法(操作码,:=,quoteblock等),表达式嵌套等.你可以在这里查看一个很好的例子:这里.
社区维基问题:
根据这个问题:在.Net中使用Scala有什么好处?另一个问题浮现在脑海中.任何人都可以在.Net平台上列出Nemerle和F#的功能开发的比较优势(和劣势)吗?我刚刚看过Nemerle.听起来它和F#在同一个场地玩得很好,所以我想知道除了显而易见的语法差异和F#支持微软的巨大优势之外还有什么区别.
我想在ASP.NET应用程序中使用Nemerle.具体来说,将.n文件放入App_Code.
我将此添加到我的web.config system.codedom/compilers部分:
<compiler language="n;Nemerle" extension=".n" type="Nemerle.Compiler.NemerleCodeProvider, Nemerle.Compiler"/>
Run Code Online (Sandbox Code Playgroud)
运行时我得到这个例外:
程序集''已经加载到另一个appdomain中.在machine.config中设置可以帮助解决此问题.
堆栈跟踪
[HttpException (0x80004005): The assembly '' is already loaded in another appdomain. Setting <deployment retail="true" /> in machine.config can help solve this issue.]
System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) +8809675
System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) +128
System.Web.Compilation.BuildManager.CompileCodeDirectories() +265
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +320
[HttpException (0x80004005): The assembly '' is already loaded in another appdomain. Setting <deployment retail="true" /> in machine.config can help solve this issue.]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() …
Run Code Online (Sandbox Code Playgroud) 看起来这两种语言都被称为"C#应该是什么",使用hygenic宏,REPL,Compiler作为Serivce(CaaS),静态+鸭子打字(C#之前的方式).这两种语言之间是否有任何重大差异,或者它们只是两种不同的实现,或多或少相同的东西?我在某地读过Nemerle的宏观服务比Boo更强大; 这是真的?
他们如何在当前活动,成熟度和IDE集成方面进行比较?
此外,C#5.0传闻的CaaS功能是否可能会使它们过时,如果它实现,或者是否有能够使它们保持相关的功能?
我正在尝试将Silverlight支持添加到我最喜欢的编程语言Nemerle中.
Nemerle,在编译过程中,主要通过两个步骤通过反射加载所有类型
1-)使用Assembly.LoadFrom加载程序集2-)使用Assembly.GetTypes()来获取类型
然后在编译结束时,它使用Reflection.Emit发出已解析的类型.
此过程适用于所有程序集,包括除Silverlight的mscorlib之外的Silverlight程序集.
在c#中,这失败了:
var a = System.Reflection.Assembly.LoadFrom(@"c:\mscorlib.dll");
Run Code Online (Sandbox Code Playgroud)
但这传递了:
var a = System.Reflection.Assembly.ReflectionOnlyLoadFrom(@"c:\mscorlib.dll");
Run Code Online (Sandbox Code Playgroud)
Bu在后者中,a.GetTypes()抛出一个异常,说System.Object的父节点不存在.
有出路吗 ?
silverlight reflection.emit nemerle mscorlib assembly.reflectiononly
我试过了
module Program
{
Main() : void
{ mutable x : byte = 0B;
mutable y : byte = 0B;
x++;
//y = x + 1;
//y = x + 1B;
//def one:byte=1;// x = x + one;
}
}
Run Code Online (Sandbox Code Playgroud)
无论我尝试哪一个,我都会收到以下错误消息.
错误1期望字节,在赋值中得到int:System.Int32不是System.Byte的子类型[simple require]
我发现作品的唯一方法就是
y = ( x + 1 ):>byte
Run Code Online (Sandbox Code Playgroud)
哪个有点faff,只是添加一个.
为什么是这样?还有更好的(阅读更短的方式)?
我有一个用Nemerle编写的.NET 3.5程序.作为项目依赖项,我有一个.NET 2.0库.我可以确定当最终用户安装.NET 3.5时我的程序会工作,还是我还需要强迫他安装.NET 2.0?
谢谢.