小编eps*_*lbe的帖子

vim重复找到下一个字符'x'

我经常在vim中导航f x以找到下一个字符'x',但忽略在我要编辑的单词和开始光标位置之间有一个单词(或更多单词)包含'x'.

所以我必须f x再次,这有点烦人,因为有这个漂亮的按钮.,它会重复最后一个命令.那么有没有办法f x通过单按按钮重复.

vim repeat

115
推荐指数
3
解决办法
2万
查看次数

Vim:输入带有8位十六进制代码的Unicode字符

如何输入Unicode字符, without copying it to the clipboard and pasting it?

Things I know:

  • The command ga角色上的命令 gives me hex:0001d4ed.
  • 我可以将它复制到剪贴板上并通过它粘贴"+p.
  • 我知道如何输入具有4位十六进制代码的Unicode值:
    <C-v>u例如<C-v>u03b1给出?字符.

unicode vim utf-16 utf

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

为什么在where子句中使用类型签名如此罕见?

它是否有助于编译器进行优化,或者仅仅是添加其他类型签名的剩余工作?例如,人们经常看到:

foo :: a -> b
foo x = bar x
      where bar x = undefined
Run Code Online (Sandbox Code Playgroud)

而不是:

foo :: a -> b
foo x = bar x
      where bar :: a -> b
            bar x = undefined
Run Code Online (Sandbox Code Playgroud)

如果我省略顶级类型签名,GHC会给我一个警告,所以如果我没有收到警告,我相信我的程序是正确的.但是如果省略where子句中的签名,则不会发出警告.

haskell where-clause type-signature

20
推荐指数
3
解决办法
2236
查看次数

getLine功能与GHCi与runhaskell的区别

我偶然发现了一件我不理解的事情.

如果我使用GHCi并使用getLine我得到以下内容

Prelude> a <- getLine
Test<Backspace>oo<CR> -- the Backspace action results in a '^?'
Prelude> a
"Test\DELoo"
Run Code Online (Sandbox Code Playgroud)

如果我在Haskell文件中写相同的

module Main where

main :: IO ()
main = do a <- getLine
          putStrLn a
Run Code Online (Sandbox Code Playgroud)

并使用runhaskell运行脚本并输入相同的输入,退格按预期删除't'.

为什么会有区别?

io haskell ghci runhaskell

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

vim更改:x函数删除缓冲区而不是保存和退出

我想:x在vim gui-mode中设置,delete buffer因为我总是杀死整个gvim,这有点烦人.我知道我可以专门设置gui问题,if has("gui running")但不知道如何重新映射:x

提前致谢

ps.:也许标签/术语remap是错误的,但我不知道正确的术语,这就是谷歌没有提供任何帮助的原因.

vim remap

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

mac上没有vimrc,gvimrc和.vim

我的Mac上没有.vimrc,.gvimrc文件和.vim/目录,因此我无法安装任何脚本.当我创建一个文件夹.vim/.vim/plugin粘贴任何脚本时,它不起作用.对不起我的英语不好.

macos vim

13
推荐指数
2
解决办法
3万
查看次数

Monads - 他们在哪里必要?

前几天我在讨论函数式编程 - 特别是Haskell和一些Java/Scala人,他们问我Monads是什么,他们在哪里需要.

以及定义和例子并不是那么难- ,,Maybe Monad 等等,让每个人都至少部分,确定跟我说单子是一件好事.IO MonadState Monad

但Monad需要在哪里 - Maybe可以通过魔法值来避免,例如-1在设置Integer""设置中String.我写了一个没有StateMonad 的游戏,这个游戏并不好,但是初学者就是这么做的.

所以我的问题是:Monads在哪里必要? - 根本无法避免.(并没有混淆 - 我喜欢Monads并使用它们,我只是想知道).

编辑

我想我必须澄清一点,我认为使用"Magic Values"是一个很好的解决方案,但很多程序员都会使用它们,特别是在C语言或SHell的低级语言中,通常会返回错误-1.

我已经清楚,不使用monad不是一个好主意.抽象通常非常有用,但也很复杂,因此许多人都在努力解决monad的概念.

我的问题的核心是,如果有可能做到,例如IO,没有monad,仍然是纯粹和功能.我知道将一个已知的良好解决方案放在一边,以及用燧石和火种点燃火灾而不是使用打火机将是乏味和痛苦的.

文章@Antal SZ指的是很棒你可以发明monad,我浏览它,当我有更多时间时肯定会读它.更有启发性的答案隐藏在@Antal SZ提到的博客文章的评论中我记得monad之前的时间,这是我在问这个问题时所寻找的东西.

language-agnostic monads functional-programming

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

是否有使用代数数据类型的Haskell数据库?

我在业余时间在Haskell编写词汇训练师.

我有一个文件,其中的条目被建模为代数数据类型,看起来像

Word { _frq=1
     , _fra="le"  
     , _eng="the; him, her, it, them"
     , _deu="der,die,das; er,sie,es"
     , _uses=[Determiner [], Pronoun []]
     , _phrase=" vive la politique, vive l'amour"
     , _sentence="long live politics, long live love"
     , _satz="Lang lebe die Politik, lang lebe die Liebe."
     }
Run Code Online (Sandbox Code Playgroud)

通常是德语翻译,_deu=并且_satz=通常只是一个空字符串,我想在程序中更新.

现在我有几个问题:1.是否有一个使用Haskell数据类型的数据库用于haskell(我真的很喜欢在我的数据库中输入安全性)?我找到的东西是HDBC与MySQL之类的绑定,以及其他一些xml/JSON的东西.

  1. 如果我更新文件而不是使用数据库,有没有办法重新编译整个程序 - 这样做会有点乏味.

和第三个问题

我想将学习的词汇保存在需要经常更新的数据结构中,因为在每个学习步骤中我更新一个表示该词知识的数字 - 并在插入/或之后对该数据结构进行排序.然后我根据它在这个数据结构中的位置选择一个新单词.对于进行完整列表遍历而言,列表似乎效率低下,如果有更好的解决方案,排序是一项很大的工作.最后一个注释我确实只有5000个列表条目,所以也许它担心速度在错误的位置?

database haskell algebraic-data-types

10
推荐指数
2
解决办法
1937
查看次数

如何让 pinia 与 vue3 中的嵌套对象一起工作

如何获得更新嵌套属性的反应式组件:

我有一个 pinia 商店定义如下

import { defineStore } from "pinia"
export const useStore = defineStore({
    id: "poc",
    state: () => ({ str: "", nested: { obj: "" } }),
    persist: {
        enabled: true,
        strategies: [{ storage: localStorage }],
    },
})
Run Code Online (Sandbox Code Playgroud)

以及以下 vue3 组件

<script lang="ts">
import { ref } from "vue"
import { storeToRefs } from "pinia"
import { useStore } from "./store"
export default {
    setup() {
        const store = useStore()
        const example = storeToRefs(store)

        const mStr = ref(example.str) …
Run Code Online (Sandbox Code Playgroud)

vuejs3 pinia

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

xmonad自动切换到应用程序

我非常喜欢xmonad,但有一点会很棒:

如果我打开一个文件gvim -p --remote-tab-silent my-file,它在vim中打开,它始终打开workspace 1,我想自动切换到workspace 1.

我刚刚发现了viewShift-trick,但这只会在gvim生成新内容时更改工作区,因此只是部分地解决了我的问题.

编辑:

感谢Daniel Wagner的评论,我能够做一些研究:

我找到了一个小程序来设置和取消紧急提示:设置.而且xwininifo我可以获得gvim的窗口ID.经过一些试验和错误后,我xprop向我展示了提示标志实际设置了.

GVIMWINID=`xwininfo -tree -root | grep GVIM | cut -d ' ' -f6`
seturgent $GVIMWINID 1
xprop -id $GVIMWINID | grep urgency
Run Code Online (Sandbox Code Playgroud)

现在我补充道

import XMonad.Hooks.UrgencyHook
..
 myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[..
, ((mod4Mask             , xK_x      ), focusUrgent)
..]
..
main = do¬                                                                       
        xmproc <- spawnPipe "/usr/bin/xmobar"¬                                   
        xmonad $ …
Run Code Online (Sandbox Code Playgroud)

haskell xmonad

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