小编Jak*_*nge的帖子

在Haskell中使用表情符号

我最近在Twitter上发现了一个名为EmojiHaskell的机器人,它声称用可编程名称变换名称发送'可解释的Haskell代码'.一个特别的推文引起了我的注意,因为它看起来像我的语法格式不正确,所以我决定仔细看看.到目前为止,我已经生成了以下代码:

module Main where

 :: [] -> Maybe 
 [] = Nothing
 (:as) = Just 

main = print $  "?"
Run Code Online (Sandbox Code Playgroud)

由于我曾经?在我的Haskell代码中使用过,我希望这段代码可以工作,但看起来GHC根本不喜欢表情符号.

随着$ runhaskell Main.hs我得到:

Main.hs:4:1:输入''解析错误

我已经看过UnicodeSyntax扩展,并试图只使用一些或单个表情符号而不是所有它们来查看某个是否会引发问题.

现在我的问题是:目前有一个接受代码的Haskell编译器吗?我可以让GHC以某种方式使用此代码吗?

twitter haskell ghc

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

我可以使用模板haskell来定义缺失的函数吗?

我有一种情况需要在不同的机器上编译一些Haskell代码.这些机器中至少有一台有一个相当旧版本的Control.Concurrent.STM,它不知道modifyTVar.我目前的解决方法是从较新版本的软件包中复制modifyTVar的代码.这让我想知道,是否可以使用模板Haskell来检查函数是否已经定义并且只定义它,如果它丢失了.我知道正确的解决方案可能是获得更新的软件包,但这种情况让我很好奇.

haskell stm template-haskell

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

数组与查找和包含混淆

给定以下数组:

const x = [2, 14, 54, 109, 129, 136, 165, 312, 320, 330, 335, 348, 399, 440, 450, 461, 482, 501, 546, 547, 549, 559, 582, 584, 615, 620, 647, 682];
const y = [539, 681, 682, 683];
Run Code Online (Sandbox Code Playgroud)

使用节点v 7.3.0我观察到以下意外行为:

[> x.find(y.includes, y);
undefined
[> y.find(x.includes, x);
682
Run Code Online (Sandbox Code Playgroud)

示例代码段:

const x = [2, 14, 54, 109, 129, 136, 165, 312, 320, 330, 335, 348, 399, 440, 450, 461, 482, 501, 546, 547, 549, 559, 582, 584, 615, 620, 647, …
Run Code Online (Sandbox Code Playgroud)

javascript arrays ecmascript-6

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

一种简单的方法来改变Parsec用户状态的类型?

我正在寻找一种简单的方法来组合ParsecT代码的两个部分,它们具有相同的流和monad,但具有不同的用户状态和结果.基本上这样的函数会很好:

withUserState :: u -> ParsecT s u m a -> ParsecT s v m a
Run Code Online (Sandbox Code Playgroud)

问题是,用户状态在某些情况下确实很有用,但我需要在不同的时间使用不同的状态,并且不希望状态类型更大.我是否必须以某种方式修改状态以实现此目的,或者是否已经存在我目前无法找到的功能?

编辑:

我认为替代方案会是这样的

changeUserState :: (u -> v) -> ParsecT s u m a -> ParsecT s v m a
Run Code Online (Sandbox Code Playgroud)

haskell parsec

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

使用 react 和 jest 测试文本输入

我在我的一个小型测试项目中有一个简单的SearchBar组件。这个 SearchBar 主要由一个文本输入和一个按钮组成,按钮点击执行一个来自输入字段的文本的回调。

我的Searchbar.render方法如下所示:

  return (
    <FormGroup controlId="keywords">
      <InputGroup>
        <FormControl type="text"
                     placeholder="Keywords…"
                     value={this.state.keywords}
                     onChange={this.updateKeywords} />
        <InputGroup.Button
          onClick={() => {this.props.onSearch(this.state.keywords);}}
          ref="searchInput">
          <Button ref="searchButton">
            <Glyphicon glyph="search"/>
          </Button>
        </InputGroup.Button>
      </InputGroup>
    </FormGroup>
  );
Run Code Online (Sandbox Code Playgroud)

我已经使用 jest 为它编写了一个测试

it("should adjust keywords and trigger onSearch correctly", () => {
  const handleSearch = jest.fn();

  const searchBar = ReactTestUtils.renderIntoDocument(
    <Searchbar onSearch={handleSearch}/>
  );
  expect(searchBar.state.keywords).toBe("");

  const button = ReactDOM.findDOMNode(searchBar.refs.searchButton);
  const input = ReactDOM.findDOMNode(searchBar.refs.searchInput);

  ReactTestUtils.Simulate.change(input, {target: {value: "test"}});

  ReactTestUtils.Simulate.click(button);
  expect(handleSearch).toHaveBeenCalledWith("test");
});
Run Code Online (Sandbox Code Playgroud)

现在此测试中的回调工作正常,并且存储在callMeget 中的函数按预期调用。这SearchBar …

ecmascript-6 reactjs jestjs react-bootstrap

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

如何在 babel-loader 和 flow 中使用 webpack

我正在为我认为不应该太难的设置而苦苦挣扎。我希望这三种技术协同工作:

  • webpack 打包代码
  • babel 以便我能够编写现代 JavaScript
  • 流,因为类型检查就像测试和 linter 一样有用

我已经对此进行了几次设置,但我在网上找到的文章似乎都没有帮助。


我在我的定义3个脚本package.jsonrunflowbuild。使用类型检查yarn run flow工作完美,babel-node使用yarn run start.

但是当我执行yarn run build以下错误时,通过 webpack 出现:

$ ./node_modules/webpack/bin/webpack.js
Hash: 207d42dac5784520fc99
Version: webpack 3.10.0
Time: 49ms
    Asset     Size  Chunks             Chunk Names
bundle.js  2.65 kB       0  [emitted]  main
   [0] ./src/main.js 181 bytes {0} [built] [failed] [1 error]

ERROR in ./src/main.js
Module parse failed: Unexpected token (3:5)
You may need an appropriate loader …
Run Code Online (Sandbox Code Playgroud)

javascript webpack flowtype babeljs babel-loader

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

是否有可能匹配Happstack中的PATCH请求?

我想知道是否有可能匹配Happstack中的PATCH请求,除了Method数据类型没有PATCH的构造函数:

data Method
= GET | HEAD | POST | PUT | DELETE | TRACE | OPTIONS | CONNECT
Run Code Online (Sandbox Code Playgroud)

但是,在某些情况下可能会出现对PATCH请求的需求,例如,在使用Backbone.js时它可以很方便.如果可以在不修改Happstack的情况下匹配不同的方法而不是定义的方法,那将是很好的.另外我想知道Happstack是否支持PATCH请求的特殊原因.

haskell http happstack http-patch

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

使用 Apollo 缓存具有多个 id 的 GraphQL 查询

我们正在 Web 应用程序中使用 apollo 客户端,并且正在寻找提高缓存使用率的方法。

我们有一个查询,需要一个ID数组作为参数与IDS的一个例子查询foobar看起来像这样:

query routes {
  routes(routeNames: ["foo", "bar"]) {
    items {
      name
      route
      defaults
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

缓存设置如下所示:

export const cacheRedirects = {
  Query: {
    routes: (_: any, args: RoutesArgs, { getCacheKey }: Resolver<'name'>): Array<CacheKey> =>
      args.routeNames.map(name => getCacheKey({ __typename: 'Route', name })),
  },
};

export const dataIdFromObject = (object: QueryResult): ?string => {
  switch (object.__typename) {
    case 'Route':
      return `${object.__typename}:${object.name}`;
    default: return defaultDataIdFromObject(object);
  }
};

export function newCache(): InMemoryCache {
  return …
Run Code Online (Sandbox Code Playgroud)

caching apollo graphql react-apollo apollo-client

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

使用lerna和deploy bot进行Monorepo发布

这是场景:

我们想要一个用于几个组件的monorepo,并希望将lerna与纱线工作区一起使用。

为了确保语义版本控制不会发生任何问题,最好对版本号进行代码审查。因此,package.json定义了一个version-bump脚本,该脚本只能用于增加软件包的版本。

在测试运行并且CR正常后,我们希望部署机器人将软件包发布给我们的自定义注册表。为此,最好使用lerna publish --skip-git,以便lerna仅发布更改的软件包。

这里的问题是,不仅lerna publish会发布软件包,还会再次要求它们增加版本。知道在不增加版本的情况下发布选项或解决方法会很高兴。

我们当前的解决方法是使用lerna exec npm publish,但这将尝试再次发布已经发布的软件包。我们也无法使用,lerna exec yarn publish因为在这种情况下yarn要求版本增加。

设置如下所示:

lerna.json:

{
  "lerna": "2.5.1",
  "version": "independent",
  "npmClient": "yarn",
  "useWorkspaces": true,
  "packages": [
    "packages/*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

package.json

{
  "name": "…",
  "version": "0.0.0",
  "description": "…",
  "main": "index.js",
  "repository": {
    "type": "git",
    "url": "…"
  },
  "workspaces": [
    "packages/*"
  ],
  "private": true,
  "scripts": {
    "version-bump": "./node_modules/lerna/bin/lerna.js publish --skip-npm",
    "test": "echo well tested"
  },
  "devDependencies": …
Run Code Online (Sandbox Code Playgroud)

continuous-integration lerna yarnpkg

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

使用 Number.toLocaleString() 的货币格式差异

我一直在寻找到现场了解数字格式的javascript和发现Number.toLocaleString通过扩展 Intl.NumberFormat似乎是这个问题解决好。

特别是我更喜欢在已经实现的特定于语言环境的格式的抽象之上进行构建,而不是重新发明轮子并为已经解决的问题提出另一种解决方案。


所以我调用Number.toLocaleString了一些不同的 javascript 环境,发现货币格式似乎发生了变化:

(5).toLocaleString('fr-CH', {currency: 'CHF', style: 'currency'});
// Node v10.15.1:  'CHF 5.00'
// Node v12.1.0:   '5.00 CHF'
// Firefox 66.0.2: '5.00 CHF'
// Chrome 73.0.…:  '5.00 CHF'
// Safari 12.0.3:  '5.00 CHF'
// IE 11:          '5.00 fr.'
Run Code Online (Sandbox Code Playgroud)
  • IE 11 与其他版本不同,但考虑到它的年龄,我并不感到惊讶。
  • 让我感到惊讶的是CHFin的格式fr-CH似乎在节点版本1012.
  • 为了进行比较,我查看了fr_CH的 glibc LC_MONETARY 设置,发现它似乎CHF至少在 1997 年左右之前放置了数量。这使得CHF对于大多数当前浏览器似乎不同的位置尤其令人困惑。

我想知道和理解:

  1. 为什么CHF在这些情况下的位置不同?
    • 我知道这取决于可用的系统区域设置或浏览器。但是节点版本之间的变化对我来说似乎表明了更新和自愿的变化。
  2. 是否有正确的方法来放置CHF …

javascript unicode localization currency icu

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

使用Javascript播放音频元素(html5)

我正在试图弄清楚如何触发从javascript播放音频.我有一些html看起来像:

<div class='audio' >foo
<audio preload='auto' controls src='test.wav'>
<b>Your browser does not support the audio tag.</b>
</audio>
</div>
Run Code Online (Sandbox Code Playgroud)

而我正试图触发它:

$(document).ready(function () {
    $('.audio').each(function(){
        var audio = $(this).find('audio').get();
        $(this).click(function(){
            audio.volume = 100;
            alert('1 '+audio);
            audio.play();
            alert('2');
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

警报('1'+音频); 按预期工作,并将音频报告为HTMLAudioElement.但警报('2'); 没有被调用因为我得到错误'audio.play'不是一个函数.我该怎么做才能解决这个问题?

javascript audio jquery html5

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

在Haskell中的Data.Set的mapM

所以我有一些Haskell代码,我想与之合作Data.Set.基本上是因为我没有太多地考虑替代方案,并且需要一个结构来存储Ord的元素而不需要重复.

我现在遇到了一种情况,我希望有一些类似mapM for Data.Set的东西,以便我可以对一组单个元素执行monadic操作.我已经搜索了Hayoo类似(a -> m b) -> Set a -> m (Set b)但没有找到任何有用的类型.

我也调查了Data.Traversable一下,发现它有[],Maybe和(Map k)的实例,但不是Set的实例.

所以我的问题是:

  1. 为什么Data.Set中没有setM for map?
  2. 是否已经有一个包裹可以提供我错过的mapM?
  3. 不鼓励想要将套装映射到套装上吗?(为什么和什么是替代品?)

haskell

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

警告:输入中出现意外字符:'\'(ASCII = 92)state = 0

我的php代码集成了yii框架后出现以下错误.

警告:输入中出现意外字符:第15行的C:\ AppServ\www\edusec\index.php中的'\'(ASCII = 92)状态= 0

解析错误:语法错误,第15行的C:\ AppServ\www\edusec\index.php中的意外T_STRING

码:

    <?php
    if(!file_exists(__DIR__.'/config/db.php')) {
        header('Location: edusec-requirements.php');
        die;
    }

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod');

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/config/web.php');
$app = new yii\web\Application($config);
$app->run();
Run Code Online (Sandbox Code Playgroud)

我正在使用Appserv 2.6.0(Php 6)开发Windows 7.

php appserver yii2

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