小编Ice*_*ack的帖子

为什么C++语法如此复杂?

我是编程新手,虽然我已经教自己Python大约一年了,我不久前学过C#.

这个月我在我的大学开始了C++编程课程,我只想问; "为什么C++代码如此复杂?"

写"你好世界".在Python中就像"打印'Hello world.'"一样简单,但在C++中它是:

# include <iostream>
using namespace std;

int main ()
{
    cout << "Hello world.";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道这可能是一个很好的理由但是,为什么......

  • ...你每次都要包括<iostream>吗?你有没有需要它?
  • ...标准库的相同问题,何时不需要std ::*?
  • ......是一个功能的"主要"部分?你有没有打电话给主要功能?为什么是整数?为什么C++需要一个main函数但Python不需要?
  • 你需要"std :: cout <<"吗?与Python相比,这不是那么漫长而复杂吗?
  • ......即使你永远不会使用它,你还需要返回0吗?

这可能是因为我正在学习这样的基本C++,但到目前为止我所做的每个程序都是这样的,所以我必须一遍又一遍地重新输入相同的代码.这不是多余的吗?编译器本身无法输入此代码,因为它总是相同的(即afaik总是包含<iostream>,std,int main,return 0)

c++ python syntax

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

为Linux创建窗口管理器

我想创建一个简单的堆栈窗口管理器(in C)供私人使用,主要是为了学习和挑战自己.

我查看了twm源代码相对较少的铃声和口哨,但它似乎非常低,因为它不是基于小工具工具包.1使用GTK +等工具包会更好吗?我担心一些代码和库twm可能过于陈旧(编辑:不推荐),我希望窗口管理器使用相对现代的库.为了便于理解,我也对如何从头开始一个窗口管理器的建议感兴趣 - 没有很多教程可以用于此目的.

更新:对于那些考虑类似项目的人:我最终使用了Common Lisp和CLX库.tinywm-lisp作为基础,辉煌的CLFSWMStumpwm是一个很好的帮助.作为参考,我使用了CLX - Common LISP X接口(PDF警告)和#xlibFreenode.

c linux x11 window-managers window-management

24
推荐指数
4
解决办法
1万
查看次数

在不活动期间隐藏Emacs回显区域

回声区是在模式线以下的Emacs底部的线:

                     ~                       ~
                     |                       |
                     +-----------------------+
                     |-U:--- mode-line       |
                     +-----------------------+
                     | M-x echo-area         |
                     +-----------------------+
Run Code Online (Sandbox Code Playgroud)

现在模式线是高度可定制的,而回声区域更加严格(并且很多时候都没有使用).问题很简单:是否可以在不活动期间隐藏回声区域,并在需要注意时重新显示它:

  ~                       ~             ~                       ~
  |                       |             |                       |
  |                       |             +-----------------------+
  |                       |             |-U:--- mode-line       |
  +-----------------------+             +-----------------------+
  |-U:--- mode-line       |             | M-x echo-area         |
  +-----------------------+             +-----------------------+

          Inactive                                Active
Run Code Online (Sandbox Code Playgroud)

这类似于当您将mose悬停在链接上时Google Chrome显示网址的方式,以及默认情况下隐藏命令行的Firefox插件Pentadactyl.

emacs appearance

19
推荐指数
3
解决办法
3701
查看次数

LaTeX中的Icelandic,utf8和utf8x

首先,什么是之间的区别UTF8utf8x

\usepackage[utf8]{inputenc}
\usepackage[utf8x]{inputenc}
Run Code Online (Sandbox Code Playgroud)

在LaTeX中使用时?

其次,使用LaTeX在冰岛写一篇文章时需要哪些包?我发现:

\usepackage[icelandic]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
Run Code Online (Sandbox Code Playgroud)

经过一段时间的实验,但我感觉有些代码可能是多余的.即使有他们上面提到的包,里面的代码

\begin{lstlisting}
...
\end{lstlisting}
Run Code Online (Sandbox Code Playgroud)

pdflatex虽然它可以在我朋友的计算机上运行(谁正在运行Debian),但是在Ubuntu中输出时不会呈现冰岛字符.少了什么东西?

latex utf-8 internationalization pdflatex

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

在Linux中使用Python创建GUI

快问.

我正在使用Linux,我想尝试使用Python制作GUI.我听说过像Qt,GTK +和PyGTK这样的东西,但我不知道它们究竟是什么,它们之间的区别是什么.

他们如何使用GNOME,KDE,XFCE等不同的DE有什么不同吗?是否有任何IDE允许您像Microsoft Visual Studio一样创建GUI(对于C#,C,Visual Basic等)?

或者我应该使用除Python以外的其他语言来制作GUI应用程序?

python linux gtk user-interface pygtk

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

Clojure相当于Python的编码('hex')和解码('hex')

在Clojure中将字符串编码和解码为十六进制是否有惯用的方法?Python的例子:

'Clojure'.encode('hex')
# ? '436c6f6a757265'
'436c6f6a757265'.decode('hex')
# ? 'Clojure'
Run Code Online (Sandbox Code Playgroud)

为了表明我的一些努力:

(defn hexify [s]
  (apply str
    (map #(format "%02x" (int %)) s)))

(defn unhexify [hex]
  (apply str
    (map 
      (fn [[x y]] (char (Integer/parseInt (str x y) 16))) 
      (partition 2 hex))))

(hexify "Clojure")
;; ? "436c6f6a757265"

(unhexify "436c6f6a757265")
;; ? "Clojure"
Run Code Online (Sandbox Code Playgroud)

hex clojure

13
推荐指数
4
解决办法
7900
查看次数

执行函数,直到它返回nil,将其值收集到列表中

我从XKCD的Hofstadter漫画中得到了这个想法; 什么是在(任何)Lisp方言中创建条件循环的最佳方法,该方法执行函数,直到它返回NIL,同时它将返回的值收集到列表中.

对于那些没有看过这个笑话的人来说,道格拉斯·霍夫施塔特的"八字"自传只包含六个词:"我就是这样的元,甚至这个缩写",包含了这个笑话的延续:(一些奇怪的meta-paraprosdokian ?)"是元" - 笑话是自传实际上是"我是如此元,甚至这个缩写是元".但为什么不深入呢?

假设META从字符串创建首字母缩略词并将其拆分为单词的首字母缩略词函数,NIL如果字符串只包含一个单词则返回:

(meta "I'm So Meta, Even This Acronym") ? "Is Meta"
(meta (meta "I'm So Meta, Even This Acronym")) ? "Im"
(meta (meta (meta "I'm So Meta, Even This Acronym"))) ? NIL

(meta "GNU is Not UNIX") ? "GNU"
(meta (meta "GNU is Not UNIX")) ? NIL
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找如何实现一个功能,以便:

(so-function #'meta "I'm So Meta, Even This Acronym") 
? ("I'm So Meta, Even This Acronym" "Is Meta" "Im") …
Run Code Online (Sandbox Code Playgroud)

lisp elisp common-lisp

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

量化约束与(封闭)类型系列

我正在尝试使用这篇博文的方法来处理更高级的数据,而无需Identity为琐碎的情况使用悬空函子以及量化约束推导:

{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE QuantifiedConstraints, StandaloneDeriving, UndecidableInstances #-}
module HKD2 where

import Control.Monad.Identity

type family HKD f a where
    HKD Identity a = a
    HKD f        a = f a

data Result f = MkResult
    { foo :: HKD f Int
    , bar :: HKD f Bool
    }

deriving instance (forall a. Show a => Show (HKD f a)) => Show (Result f)
Run Code Online (Sandbox Code Playgroud)

这导致了令人气愤的自相矛盾的错误信息:

无法Show (HKD f a) 从上下文推断:forall a. Show …

haskell type-families deriving quantified-constraints derivingvia

9
推荐指数
2
解决办法
262
查看次数

Haskell - 自动 Monad 实例

我正在尝试创建自己的数据类型,它将成为 Monad 类的一部分,但是

newtype Container a = Container a deriving Monad
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

   * Can't make a derived instance of `Monad Container'
        (even with cunning GeneralizedNewtypeDeriving):
        cannot eta-reduce the representation type enough
    * In the newtype declaration for `Container'
   |
30 | newtype Container a = Container a deriving Monad
Run Code Online (Sandbox Code Playgroud)

它适用于其他类(例如 Show),但不适用于 Monad,那么我如何说服 ghci 将我的 Container 实例化为 Monad 类?

谢谢

monads haskell instance deriving newtype

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

新类型的 Haskell Monoid 实例问题

我正在尝试定义一个实例:

newtype Join a = Join { getJoin :: a -> Bool }
   deriving Generic

instance Monoid (Join a) where
   f <> g = ???
   mempty = ???
Run Code Online (Sandbox Code Playgroud)

目标是如果列表中的所有函数都为真,则函数 foldMap Join 应该返回 True,如果所有函数都不为真,则返回 false。

我了解 foldMap 以及 Monoid 的 Sum 和 Product 实例,但对于编写 Monoid 的 newtype 实例我还是很陌生的。任何在正确方向上的帮助将不胜感激。谢谢你。

haskell monoids deriving newtype derivingvia

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