小编Dax*_*ohl的帖子

记录F#的变化

我想要一些方法来定义相关记录.例如,

type Thing       = { field1: string; field2: float }
type ThingRecord = { field1: string; field2: float; id: int; created: DateTime }
Run Code Online (Sandbox Code Playgroud)

要么

type UserProfile = { username: string; name: string; address: string }
type NewUserReq  = { username: string; name: string; address: string; password: string }
type UserRecord  = { username: string; name: string; address: string; encryptedPwd: string; salt: string }
Run Code Online (Sandbox Code Playgroud)

以及从一个转换到另一个的方式,而不需要写那么多样板文件.即使是第一个完整的例子也是:

type Thing =
  { field1: string
    field2: float }
  with
    member this.toThingRecord(id, created) =
      { field1 …
Run Code Online (Sandbox Code Playgroud)

f# type-providers

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

Boo vs Nemerle有什么区别?

看起来这两种语言都被称为"C#应该是什么",使用hygenic宏,REPL,Compiler作为Serivce(CaaS),静态+鸭子打字(C#之前的方式).这两种语言之间是否有任何重大差异,或者它们只是两种不同的实现,或多或少相同的东西?我在某地读过Nemerle的宏观服务比Boo更强大; 这是真的?

他们如何在当前活动,成熟度和IDE集成方面进行比较?

此外,C#5.0传闻的CaaS功能是否可能会使它们过时,如果它实现,或者是否有能够使它们保持相关的功能?

macros boo nemerle compiler-as-a-service

8
推荐指数
2
解决办法
1386
查看次数

为什么即使在未使用的情况下我也会在Heroku上获得超出内存配额的错 (play2 /阶)

只是坐着没有请求,我得到内存不断增加,最终超出内存配额.我不明白有很多事情.

  1. 为什么没有请求时内存使用会不断增加?
  2. "处理运行内存"的值来自何处(似乎不是我可以告诉的堆和非堆使用中的任何数字组合的总和).
  3. 即使我有推荐,为什么它会超过JAVA_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops -javaagent:heroku-javaagent-1.2.jar=stdout=true

以下是日志文件的示例

app/web.1:  heroku-javaagent: JVM Memory Usage     (Heap): used: 275M committed: 349M max:349M 
app/web.1:  heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1:  heroku-javaagent: JVM Threads                : total: 37 daemon: 7 non-daemon: 21 internal: 9 
app/web.1:  heroku-javaagent: JVM Memory Usage     (Heap): used: 276M committed: 349M max:349M 
app/web.1:  heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1:  heroku-javaagent: JVM Threads                : total: 37 daemon: 7 non-daemon: 21 internal: …
Run Code Online (Sandbox Code Playgroud)

scala heroku playframework-2.0

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

是否有可能在clojure中对懒惰序列进行破坏的头/尾分离?

我看到一些例子表明我们可以在clojure中得到一个很好的头/尾解构序列,如下所示:

(if-let [[x & xs] (seq coll)]
Run Code Online (Sandbox Code Playgroud)

但是我认为这对延迟序列不起作用,因为这会将值放入一个不是惰性的向量中.我尝试将矢量形式更改为列表形式,它给了我绑定错误,引用与否.

没有像这样的绑定,似乎如果我有一个懒惰的序列,其中每个元素是前一个元素的计算密集型方程式,我必须做两次计算才能将头部和尾部作为单独的语句,对?

(let [head (first my-lazy-seq) ;; has to calculate the value of head.
      tail (rest my-lazy-seq)] ;; also has to calculate the value of head to prepare the rest of the sequence.
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,或者我在某个地方做出了错误的假设?

clojure

8
推荐指数
2
解决办法
2513
查看次数

在clojure中短路期货

我有两个期货可以解决布尔.我基本上想做点什么

(if (or @future1 @future2) 
  ...)
Run Code Online (Sandbox Code Playgroud)

但是,通过优化,无论哪一个完成,如果它是真的,那么我不等待剩余的未来完成; 去吧.当然,如果值为false,则等待剩余的未来完成.有这么简单的方法吗?

asynchronous future clojure promise

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

TChan是否已将其集成到Haskell STM中?

如果STM事务失败并重试,是否writeTChan重新执行调用以便最终进行两次写入,或者如果事务提交,STM是否仅实际执行写入?也就是说,睡眠理发师问题的解决方案是否有效,或者如果enterShop第一次交易失败,客户可能会获得两次折扣?

import Control.Monad
import Control.Concurrent
import Control.Concurrent.STM
import System.Random
import Text.Printf

runBarber :: TChan Int -> TVar Int -> IO ()
runBarber haircutRequestChan seatsLeftVar = forever $ do
  customerId <- atomically $ readTChan haircutRequestChan
  atomically $ do
    seatsLeft <- readTVar seatsLeftVar
    writeTVar seatsLeftVar $ seatsLeft + 1
  putStrLn $ printf "%d started cutting" customerId
  delay <- randomRIO (1,700)
  threadDelay delay
  putStrLn $ printf "%d finished cutting" customerId

enterShop :: TChan Int -> TVar Int -> Int …
Run Code Online (Sandbox Code Playgroud)

haskell stm

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

任何*else*类似于Haskell在F#中的$而不是<|?

我知道有一个后管(<|)操作员,在其他几个SO答案中引用.但是当与前管相结合时(|>),这种方法效果不佳,这在链接中很常见.但是我正在寻找相关的选择.基本上是否有以下功能定义的内置版本?或者这是一个坏/危险的做法?

let inline (^%) f = f

let stuff = 
  [1;2;3]
  |> Seq.filter ^% (>) 2
  |> Seq.map ^% fun x -> x.ToString()


// compare to this, which doesn't compile (and would be hard to follow even if it did)
let stuff = 
  [1;2;3]
  |> Seq.filter <| (>) 2
  |> Seq.map <| fun x -> x.ToString()
Run Code Online (Sandbox Code Playgroud)

f#

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

如何将out/ref extern参数转换为F#

我有一个C#extern声明,如下所示:

    [DllImport("something.dll")]
    public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);
Run Code Online (Sandbox Code Playgroud)

如何将其翻译为F#?

pinvoke f# extern ref-parameters

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

如何创建一个IEnumerable来在一个语句中懒惰地获取所有X.

C#不允许lambda函数表示迭代器块(例如,lambda函数内不允许"yield return").如果我想创建一个懒惰的枚举,例如在枚举时产生所有驱动器,我想做类似的事情

IEnumerable<DriveInfo> drives = {foreach (var drive in DriveInfo.GetDrives()) 
                                     yield return drive;};
Run Code Online (Sandbox Code Playgroud)

花了一段时间,但我认为这是获得该功能的一种方式:

var drives = Enumerable.Range(0, 1).SelectMany(_ => DriveInfo.GetDrives());
Run Code Online (Sandbox Code Playgroud)

有更惯用的方式吗?

c# lambda iterator lazy-evaluation

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

WPF全屏切换仍显示桌面的一部分

我正在尝试制作一个加载全屏的WPF应用程序,并让F11键在全屏和窗口之间切换.

使用以下代码,它首先在全屏模式下正确显示在屏幕上.切换将其拉回到常规窗口.

然后随后的切换它几乎进入全屏模式但似乎向上移动了~10像素,因此任务栏的一半是可见的.我能够在一个空主窗口的新WPF项目中重现这一点.

public partial class MainWindow : Window {
    public MainWindow() {
        InitializeComponent();
        this.WindowState = WindowState.Maximized;
        this.WindowStyle = WindowStyle.None;
        this.ResizeMode = ResizeMode.NoResize;
        this.Topmost = true;
        this.PreviewKeyDown +=
            (s, e) => {
                if (e.Key == Key.F11) {
                    if (this.WindowStyle == WindowStyle.None) {
                        this.WindowState = WindowState.Normal;
                        this.WindowStyle = WindowStyle.SingleBorderWindow;
                        this.ResizeMode = ResizeMode.CanResize;
                        this.Topmost = false;
                    } else {
                        this.WindowState = WindowState.Maximized;
                        this.WindowStyle = WindowStyle.None;
                        this.ResizeMode = ResizeMode.NoResize;
                        this.Topmost = true;
                    }
                }
            };
    }
}
Run Code Online (Sandbox Code Playgroud)

这是框架中的错误吗?我无法想象它会被忽视直到现在,但我不知道我做错了什么.这些是应该完成工作的属性,它们几乎可以工作但不完全.我试过搞乱其他Window …

c# wpf

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