小编Tuo*_*nen的帖子

F#List SelectMany

这是一个非常简单的问题,但我找不到答案:

在F#中是否有任何Seq/List操作来匹配LINQ SelectMany?

  • 我知道如果我愿意,我可以在F#中使用System.Linq.
  • 我知道我可以制作一个递归方法并使用F#Computation Expressions(并制作更强大的东西).

但是,如果我试图证明F#List操作比LINQ更强大......

  • .Where = List.filter
  • .Select = List.map
  • .Aggregate = List.fold
  • ...

在C#SelectMany使用语法非常简单:

var flattenedList = from i in items1
                    from j in items2
                    select ...
Run Code Online (Sandbox Code Playgroud)

有没有简单的直接匹配,List.flatten,List.bind或类似的东西?

SelectMany有几个签名,但最复杂的签名似乎是:

IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
    this IEnumerable<TSource> source, 
    Func<TSource, IEnumerable<TCollection>> collectionSelector, 
    Func<TSource, TCollection, TResult> resultSelector
);
Run Code Online (Sandbox Code Playgroud)

在F#术语中,这将是:

('a -> 'b list) -> ('a -> 'b -> 'c) -> 'a list -> 'c list
Run Code Online (Sandbox Code Playgroud)

linq f#

30
推荐指数
3
解决办法
8379
查看次数

面向对象编程中有哪些数学对偶?

如果你最近看过Channel9的Going Deep节目,那么一个经常提到的话题就是编程中的数学二重性.TomasP有一篇关于面向对象编程的二元性的博客文章.

自从Microsoft Research发现观察者设计模式实际上是迭代器模式的数学对偶以来.从那以后,他们以各种方式使用了二元概念.

我的问题是:

编程中有哪些数学对偶?

面向对象编程是一个良好的开端.主要的GoF设计模式是:装饰器,状态,迭代器,外观,策略,代理,工厂方法,适配器,观察者,模板方法,复合,单例,抽象工厂和命令.是一个很好的对象 - 海报.

oop design-patterns category-theory

15
推荐指数
1
解决办法
653
查看次数

什么是"monadic反射"?

什么是"monadic反射"?

如何在F#程序中使用它?

术语"反射"的含义是否与.NET反射相同?

f#

14
推荐指数
2
解决办法
1194
查看次数

Javascript代码示例的Reactive Extensions

Microsoft已发布Javascript的Reactive Extensions.它应该使异步(和基于事件的)web-ui编程变得容易.

目前有一个视频一些教程.但是我真的能做出多酷的UI?你知道使用rx.js的任何好的演示或代码示例吗?

javascript reactive-extensions-js

7
推荐指数
1
解决办法
4281
查看次数

MSBuild:构建 asp.net 4.0 网站:.metaproj -files

我有一个包含 ASP.NET 网站的解决方案文件。

当我使用 .NET 4.0 Beta 2 构建解决方案时

"c:\WINDOWS\Microsoft.NET\Framework\v4.0.21006\MSBuild.exe" d:\MyPath\MySolution.sln

一切正常,没有错误。然后我尝试使用 CruiseControl .NET 任务(由服务运行的 msbuild-script)构建相同的解决方案,相同的解决方案失败了:

D:\MyPath\MyWebSite.metaproj (,): errorMSB4025: 无法加载项目文件。找不到文件“D:\MyPath\MyWebSite.metaproj”。

当然,没有这样的文件。我猜 *.metaproj 是一个类似 .csproj 的 msbuild 文件,它是为网站动态生成的...

但我不知道如何修复错误......我试图谷歌元数据文件但没有运气。我确实尝试手动制作文件,我插入了一个带有 <Task Name="Rebuild"> 的 <Project> 并且编译没有引发任何错误,但我猜该站点没有编译。

同一台机器有 .NET 3.5 和 .NET 4.0 项目以及两个框架的环境变量。

cruisecontrol.net msbuild vs-web-site-project asp.net-4.0 web

5
推荐指数
1
解决办法
1万
查看次数

不再使用时,我应该明确清除非全局 ConcurrentDictionary,还是 GC 检测到它不再使用?

不再使用时,我应该明确清除非全局 ConcurrentDictionary,还是 GC 检测到它不再使用?

这有点相关:ConcurrentBag 是内存泄漏的原因吗?


编辑:我问的原因是,我有以下代码(此处简化):

let myMethod() =
  async {
    let myEventList = ConcurrentDictionary<myEventParams, bool>()
    use o = myEvent |> Observable.subscribe(fun e ->
            myEventList.GetOrAdd(e, true) |> ignore)
    let! res = doAsyncThingsCausingEvents()
    myEventList |> Seq.iter(fun (e,_) -> Console.WriteLine "We had " + e.ToString())
    res
  }
Run Code Online (Sandbox Code Playgroud)

...实际上它在多个线程中多次并行调用时会泄漏内存。

.net c# f# memory-leaks memory-management

5
推荐指数
1
解决办法
67
查看次数

F-Sharp(F#)无类型无限

我想知道为什么F-Sharp不支持无限.

这适用于Ruby(但不适用于f#):

let numbers n = [1 .. 1/0] |> Seq.take(n)
Run Code Online (Sandbox Code Playgroud)

- > System.DivideByZeroException:尝试除以零.

我可以用非常复杂的方式编写相同的功能:

let numbers n = 1 |> Seq.unfold (fun i -> Some (i, i + 1)) |> Seq.take(n)
Run Code Online (Sandbox Code Playgroud)

- >工作

但是我认为第一个会更清楚.我找不到在F#中使用动态类型无穷大的任何简单方法.有无限关键字,但它是浮点数:

let a = Math.bigint +infinity;;
Run Code Online (Sandbox Code Playgroud)

System.OverflowException:BigInteger不能表示无穷大.at System.Numerics.BigInteger..ctor(Double value)at.$ FSI_0045.main @()因错误而停止


编辑:这似乎也适用于迭代:

let numbers n = Seq.initInfinite (fun i -> i+1) |> Seq.take(n)
Run Code Online (Sandbox Code Playgroud)

f# functional-programming infinite-loop infinity lazylist

3
推荐指数
1
解决办法
1582
查看次数

System.Drawing:GDI +未正确初始化(内部GDI +错误)

ASP.NET Web站点随机引发此System.Drawing-error:

System.Runtime.InteropServices.ExternalException:System.Drawing.Bitmap..ctor(Stream stream)System.Drawing.ToolboxBitmapAttribute..cctor()

Exception information: 
    Exception type: TypeInitializationException 
    Exception message: The type initializer for 'System.Drawing.ToolboxBitmapAttribute' threw an exception. 

Stack trace:    at System.Reflection.CustomAttribute._CreateCaObject(Void* pModule, Void* pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs)
   at System.Reflection.CustomAttribute.CreateCaObject(Module module, RuntimeMethodHandle ctor, IntPtr& blob, IntPtr blobEnd, Int32& namedArgs)
   at System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes)
   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
   at System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit)
   at System.ComponentModel.ReflectTypeDescriptionProvider.ReflectGetAttributes(Type type)
   at System.ComponentModel.ReflectTypeDescriptionProvider.ReflectedTypeData.GetAttributes()
   at System.ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel.ICustomTypeDescriptor.GetAttributes()
   at System.ComponentModel.TypeDescriptor.GetAttributes(Type componentType)
   at System.Web.UI.ThemeableAttribute.IsTypeThemeable(Type …
Run Code Online (Sandbox Code Playgroud)

asp.net iis system.drawing gdi+

3
推荐指数
1
解决办法
7146
查看次数

属性:当前的REST架构工具是否仅限于树结构?

历史上操作系统目录结构是树:

  • C:
    • 视窗
      • SYSTEM32
    • 程序文件
      • 共同文件
      • IE浏览器

REST架构模拟同样的事情:

但是,看看当前的结构,我需要进行搜索:

  • 所有不是芬兰的照片?
  • 所有2005年拍摄的照片?
  • 时间线上的所有图片?

使用每个树层次结构组合执行REST接口效率不高.您需要更有效的信息管理; 你需要一个属性系统而不是树形结构.(哦,为什么操作系统不是基于属性?)

StackOverflow和Google似乎使用属性和语法"+" - 标记如下:

今天的框架如WCF和ASP.NET MVC对RESTful树结构有很好的支持.但是对属性结构有支持吗?难道你不会将属性结构称为REST吗?

我想创建一个属性-WebService并将其与Silverlight-client中的LINQ一起使用...哪种方法最好?:-)

rest attributes web-services

1
推荐指数
1
解决办法
691
查看次数

解决河内塔问题

我如何解决河内塔问题的运行时间.我得到一个像t(n)= 2t(n-1)+ 1的递归反射.绘制递归树后,我得到每一步的值,如1 + 2 + 4 + 8 ...树的高度将是lg (N).我如何计算系列的总和?我什么时候停止?

algorithm towers-of-hanoi

1
推荐指数
1
解决办法
3610
查看次数