小编Zim*_*i48的帖子

关于Init的Elm Http请求

我对榆树很新,但慢慢熟悉它.我正在做一些简单的Http请求,它在各个方面都很成功(我得到要显示的数据等)

目前我只能让我的fetchData触发onClick,我想在init上初始化它,但是我无法绕过这个问题.

....这是我的fetchData函数:

fetchData : Cmd Msg
fetchData =
  Http.get repoInfoListDecoder "http://example/api"
    |> Task.mapError toString
    |> Task.perform ErrorOccurred DataFetched
Run Code Online (Sandbox Code Playgroud)

当前由onClick事件在视图中触发:

.....
, button [ onClick FetchData ] [ text "Load Data" ]
.....
Run Code Online (Sandbox Code Playgroud)

我想避免通过按钮请求数据,而是希望在初始化应用程序时加载数据.这是我的初始:

init =
  let
    model =
      { message = "Welcome", repos = [] }
  in
    model ! []
Run Code Online (Sandbox Code Playgroud)

还有我的更新(有点剥离...例如sakes):

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
  case msg of
    NoOp ->
      model ! []
    ...........
    FetchData ->
      { model | message="hi" …
Run Code Online (Sandbox Code Playgroud)

elm

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

如何在Linux中安装SSReflect和MathComp?

我在Linux(Ubuntu 17.04)中成功安装了Coq 8.6和CoqIDE.但是,我不知道为了将SSReflect和MathComp添加到此安装中而继续.我检查过的所有参考资料似乎都让我很困惑.有没有人有一个直接和简单的食谱?我确实安装了opam.

linux coq ssreflect

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

如何正确使用nix-shell并避免"倾斜非常大的路径"?

基于我的读数(特别是维基这篇博客文章),我想出了下面default.nix,我和加载nix-shell:

with import <nixpkgs> {};

let emacs =
  emacsWithPackages (p : [ p.tuareg ]);
in

stdenv.mkDerivation rec {
    name = "env";

    src = ./.;

    # Customizable development requirements
    buildInputs = [
        pkgconfig
        ocaml
        ocamlPackages.merlin
        ocamlPackages.findlib
        ocamlPackages.lablgtk
        ocamlPackages.camlp5_transitional
        ncurses
        emacs
    ];

    # Customizable development shell setup
    shellHook = ''
        export PATH=`pwd`/bin:$PATH
    '';
}
Run Code Online (Sandbox Code Playgroud)

但它总是打印一个警告:

warning: dumping very large path (> 256 MiB); this may run out of memory
Run Code Online (Sandbox Code Playgroud)

并且需要很长时间才能加载(nix-shell启动后第一次呼叫约45 秒,后续呼叫约2秒).

这条消息是什么意思?当我在Google上查找它时,我发现了一些GitHub问题,但没有以一种易于理解的方式表达. …

ocaml nix

7
推荐指数
2
解决办法
979
查看次数

使用nix-shell从nixpkgs-unstable加载依赖项

我在NixOS 16.09上,我想使用目前仅在nixpkgs-unstable/nixos-unstable中的软件包.

使用nix-channel --add,我能够将nixpkgs-unstable添加到我的(用户)频道,并使用它来安装最新版本的某些软件包nix-env.

但是,据我所知,虽然nix-env依赖于用户定义的通道,但nix-shell取决于NIX_PATH环境变量,在我的情况下:

$ echo $NIX_PATH 
nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels
Run Code Online (Sandbox Code Playgroud)

所以这清楚地表明了问题:nix-shell将使用系统范围的NixOS 16.09通道而不是用户定义的nixpkgs-unstable通道.

现在,我正在使用此解决方法:

nix-shell -I nixpkgs=~/.nix-defexpr/channels/nixpkgs
Run Code Online (Sandbox Code Playgroud)

它看起来不是很漂亮.这样做的推荐方法是什么?

它是否添加如下内容:

export NIX_PATH="nixpkgs=~/.nix-defexpr/channels/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels"
Run Code Online (Sandbox Code Playgroud)

对我.profile?它看起来也不是很漂亮.

nixos nix

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

记录平等的策略?

在Coq中,当试图证明记录相等时,是否有一种策略可以将其分解为所有字段相等?例如,

Record R := {x:nat;y:nat}.

Variables a b c d : nat.

Lemma eqr : {|x:=a;y:=b|} = {|x:=c;y:=d|}.
Run Code Online (Sandbox Code Playgroud)

有没有一种策略可以将其减少到a = c /\ b = d?请注意,一般而言,任何一个a b c d可能都是复杂的大型证明术语(然后我可以使用证明不相关公理来执行)。

coq coq-tactic

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

Eta转换战术?

是否有一种策略可以使用而不是replace在下面的示例中来简化此表达式?

Require Import Vector.

Goal forall (n b:nat) (x:t nat n), (map (fun a => plus b a) x) = x.
Proof.
  intros n b x.
  replace (fun a => plus b a) with (plus b) by auto.
  ...
Run Code Online (Sandbox Code Playgroud)

coq coq-tactic

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

标签 统计

coq ×3

coq-tactic ×2

nix ×2

elm ×1

linux ×1

nixos ×1

ocaml ×1

ssreflect ×1