小编rys*_*ama的帖子

F#:"有趣"的关键字是否必要?

我正在输入"fun"关键字,然后我记得你不必在C#中

不会这样:

List.map (x -> x + 1) [1..10]

和这个一样富有表现力吗?:

List.map (fun x -> x + 1) [1..10]

这让我很好奇为什么"fun"关键字是必要的.有人可以澄清为什么"fun"关键字在语法上是必需的吗?

lambda f#

20
推荐指数
2
解决办法
3386
查看次数

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

F#:相互递归函数

可能重复:
[F#]如何让两种方法相互呼叫?

大家好,

我有一个场景,我有两个功能,可以从相互递归中受益,但我不确定如何在F#中做到这一点

我的场景不像下面的代码那么简单,但我想得到类似于编译的东西:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

let rec g x =
  if x>0 then
    f (x-1)
  else
    x
Run Code Online (Sandbox Code Playgroud)

recursion f# mutual-recursion

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

是否需要HttpWebRequest.GetResponse来完成POST?

对于使用HttpWebRequest的POST请求,当我写入请求流时,数据在什么时候发送?是在关闭请求流还是调用GetResponse时?是否需要GetResponse电话?

.net文档似乎并不十分清楚真正发生的事情

这是我很好奇的代码:

HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.ContentLength = jsonData.Length;
request.ContentType = "application/json";

Stream requestStream = request.GetRequestStream();

requestStream.Write(jsonData, 0, jsonData.Length);

requestStream.Close();

var response = request.GetResponse() as HttpWebResponse;
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# httpwebrequest web

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

F#:添加和删除事件处理程序

我正在尝试从Silverlight FrameworkElement添加和删除事件处理程序,但我无法使语法正确.

我想做这样的事情:

let clickedEventHandler = fun args -> printfn "Click!"
fe.MouseLeftButtonDown.AddHandler( clickedEventHandler)
...
fe.MouseLeftButtonDown.RemoveHandler(clickedEventHandler)
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

silverlight f# event-handling

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

F#:需要帮助将C#转换为F#

我正在尝试为子弹地狱游戏编写一个小小的脚本引擎,我想在F#中进行.我写了一些C#代码来概念化它,但是我把它移植到F#时遇到了麻烦.C#代码发布在下面,我想帮助将它移植到F#.我觉得匹配的F#代码会明显变小.我愿意接受任何创造性的解决方案:)

interface IRunner
{
    Result Run(int data);
}

struct Result
{
    public Result(int data, IRunner next)
    {
        Data = data;
        Next = next;
    }
    public int Data;
    public IRunner Next;
}

class AddOne : IRunner
{
    public Result Run(int data)
    {
        return new Result(data + 1, null);
    }
}

class Idle : IRunner
{
    public Result Run(int data)
    {
        return new Result(data, null);
    }
}

class Pair : IRunner
{
    IRunner _one;
    IRunner _two;

    public Pair(IRunner one, IRunner two)
    { …
Run Code Online (Sandbox Code Playgroud)

c# f#

4
推荐指数
2
解决办法
514
查看次数

让WebAPI控制器向同一服务中的另一个控制器发送http请求

我有一个WebAPI服务,我希望它向自己发送一个http请求.我想确认最合适的做法是什么样的.(通常,我只是实例化目标控制器的另一个实例或重构接口后面的代码,然后以这种方式发出请求,但由于各种原因,我不想使用该方法.)

下面的代码是否是在同一服务中向另一个控制器发出http请求的最合适方式?

using (HttpClient client = new HttpClient())
{
  var httpRequest = new HttpRequestMessage("GET", "https://localhost/SomeOtherController");
  return await client.SendAsync(httpRequest);
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-web-api asp.net-web-api2

4
推荐指数
2
解决办法
2427
查看次数

F#:从字符串中删除前N个字符?

我正在尝试编写一些代码来删除字符串中的前N个字符.我本可以以强制性的方式完成这项任务,但我希望看到它以函数式编程的精神完成.作为F#和函数式编程的新手,我遇到了一些麻烦......

string f#

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

F#:存储和映射函数列表

我在游戏中发生了很多事件.我想控制这些事件发生的时间和顺序.

例如:

事件1:在屏幕上显示N帧的一些文本并播放声音效果

事件2:清除屏幕上的文本

我的解决方案(可能有一个更好的解决方案)是拥有包含事件的函数列表.事件执行其行为然后返回在游戏中发生的下一个事件.我想过使用List.map或List.collect,因为我实际上是在执行某些行为代码时将事件列表映射到新的事件列表.

在上面的示例中,Event1可以由两个函数组成:一个显示文本,另一个播放声音(因此需要列表).显示文本的函数将为N-1帧返回自身的副本,然后它将返回清除文本的Event2.播放声音功能将返回相当于无操作的声音.

如果这是一个很好的解决方案,我可以用C++或C#来做.我的目标是在F#中做同等或更好的解决方案.

f# function list map

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

F#:递归收集并过滤N-ary树

这伤害了我的大脑!

我想在树结构上进行递归,并将与某个过滤器匹配的所有实例收集到一个列表中.

这是一个示例树结构

type Tree =
| Node of int * Tree list
Run Code Online (Sandbox Code Playgroud)

这是一个测试样本树:

let test = 
    Node((1,
            [Node(2,
                    [Node(3,[]);
                    Node(3,[])]);
            Node(3,[])]))
Run Code Online (Sandbox Code Playgroud)

使用和int值为3的节点收集和过滤应该为您提供如下输出:

[Node(3,[]);Node(3,[]);Node(3,[])]
Run Code Online (Sandbox Code Playgroud)

f# n-ary-tree

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