LINUX.ORG.RU

Сообщения FeelUs

 

Помогите выбрать hackable text editor

В основном между:

emacs на elisp - вроде старый какой-то

sublime на python - в консоли не запускается (но это далеко не главный критерий)

, а какие бывают еще?

atom (на javascript) - не предлагайте, у меня оперативки не так много

vim - не очень hackable, там вообще можно избавиться от vim-режима?

 

FeelUs
()

Генерировать простые числа на haskell

Помогите придумать функцию, генерирующую бесконечный список простых чисел, такой же как [1..] или fib a b = a:fib b (a+b).

Очевидно, что это можно сделать неоптимально:

ghci> let isprime x = all (\n->x`mod`n/=0) [2..x-1]
ghci> take 10 $ filter isprime [2..]
а так же можно сделать оптимально, но так,чтоб генерировала бесконечный список у меня не получается
ghci> let isprimeof x primes = all (\y-> x`mod`y/=0) primes
ghci> let newprime primes = x where Just x =  find (flip isprimeof primes) [(last primes)..]
ghci> let addprime primes = primes ++ [newprime primes]
дальше можно определить primegen primes = primegen $ addprime primes, но это будет бесконечная рекурсия, которая не выдает список

 

FeelUs
()

No instance for (Num t0) arising from the literal `3' The type variable `t0' is ambiguous

class FooAble t where
    foo :: t->Bool
    foo _ = False

instance FooAble Int where
  foo x | x == 3 = True
        | otherwise = False

при попытке выполнить foo 3 появляется ошибка:

*Nat> foo 3

<interactive>:113:1:
    No instance for (FooAble t0) arising from a use of `foo'
    The type variable `t0' is ambiguous
    Note: there is a potential instance available:
      instance FooAble Int -- Defined at Nat.hs:75:10
    In the expression: foo 3
    In an equation for `it': it = foo 3

<interactive>:113:5:
    No instance for (Num t0) arising from the literal `3'
    The type variable `t0' is ambiguous
    Note: there are several potential instances:
      instance Integral a => Num (GHC.Real.Ratio a)
        -- Defined in `GHC.Real'
      instance Num Integer -- Defined in `GHC.Num'
      instance Num Double -- Defined in `GHC.Float'
      ...plus three others
    In the first argument of `foo', namely `3'
    In the expression: foo 3
    In an equation for `it': it = foo 3
*Nat>

как справиться с ошибкой? написание (fromInteger 3) и там и там не помогает

и еще такой вопрос: могу ли я в области сопоставления с образцом писать

foo 3 = ...
, ведь он автоматически раскрывается в
foo (fromInteger 3) = ...
, а fromInteger - это функция, а не конструктор?

 

FeelUs
()

Ambiguous occurrence в haskell

При решении задачки из учебника

data BinTree a = Leaf a | Branch (BinTree a) (BinTree a)

reverse :: BinTree a -> BinTree a
reverse (Leaf a) = Leaf a
reverse (Branch a b) = Branch (reverse b ) (reverse a )
-- reverse (Branch a b) = Branch (reverse  :: (BinTree a -> BinTree a) b ) (reverse :: (BinTree a -> BinTree a) a )
-- reverse (Branch a b) = Branch (reverse b :: (BinTree x)) (reverse a :: (BinTree x))

ghci при загрузке модуля, как бы я не пытался ему намекнуть типы, мне говорит одно и то же

Nat.hs:50:32:
    Ambiguous occurrence `reverse'
    It could refer to either `Nat.reverse', defined at Nat.hs:47:1
                          or `Prelude.reverse',
                             imported from `Prelude' at Nat.hs:1:8-10
                             (and originally defined in `GHC.List')

Nat.hs:50:59:
    Ambiguous occurrence `reverse'
    It could refer to either `Nat.reverse', defined at Nat.hs:47:1
                          or `Prelude.reverse',
                             imported from `Prelude' at Nat.hs:1:8-10
                             (and originally defined in `GHC.List')
Failed, modules loaded: none.

как с этим справится не отключая reverse из Prelude, а что бы была перегрузка функции?

Перемещено beastie из general

 

FeelUs
()

форматированный вывод сообщений об ошибках gcc

Перед тем, как писать свой велосипед спрошу: Допустим gcc выдает мне следующее сообщение

/usr/lib/gcc/i686-pc-cygwin/4.9.3/include/c++/bits/predefined_ops.h: In instantiation of «bool __gnu_cxx::__ops::_Iter_equals_val<_Value>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, long long int> >*, std::vector<std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, long long int> > > >; _Value = const std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, int> >]»:
/usr/lib/gcc/i686-pc-cygwin/4.9.3/include/c++/bits/stl_algo.h:866:28:   required from «_ForwardIterator std::__remove_if(_ForwardIterator, _ForwardIterator, _Predicate) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, long long int> >*, std::vector<std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, long long int> > > >; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, int> > >]»
а я хочу его видеть в таком формате:
/usr/lib/gcc/i686-pc-cygwin/4.9.3/include/c++/bits/predefined_ops.h: In instantiation of «
	bool __gnu_cxx::__ops::_Iter_equals_val<_Value>::operator()(_Iterator) [
		with _Iterator = __gnu_cxx::__normal_iterator<
			std::pair<
				std::pair<char, std::basic_string<char> >, 
				std::pair<long long int, long long int> >*, 
				std::vector<
					std::pair<
						std::pair<char, std::basic_string<char> >, 
						std::pair<long long int, long long int> 
					> 
				> 
			>; 
		_Value = const std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, int> >
	]
»:
/usr/lib/gcc/i686-pc-cygwin/4.9.3/include/c++/bits/stl_algo.h:866:28:   required from «
	_ForwardIterator std::__remove_if(_ForwardIterator, _ForwardIterator, _Predicate) [
		with _ForwardIterator = __gnu_cxx::__normal_iterator<
			std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, long long int> >*,
			std::vector<std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, long long int> > > 
		>; 
		_Predicate = __gnu_cxx::__ops::_Iter_equals_val<
			const std::pair<std::pair<char, std::basic_string<char> >, std::pair<long long int, int> > 
		>
	]
»
Существуют ли утилиты, делающие что-то подобное?

 , ,

FeelUs
()

Аналог touch для си

Подскажите пожалуйста си-шную функцию, которая меняет время изменения файла (аналог команды touch).

Спасибо

 ,

FeelUs
()

уменьшить число элементов в массиве

что-то не пойму, возможен ли в bash сабж в принципе?

$ arr=(1 2 3 4 5)
$ echo ${#arr}
5
$ unset arr[5]
$ echo ${#arr}
5

видно, что этот способ не работает, но может есть какой-нибудь другой?

upd: это на самом деле на bash а zsh

 , ,

FeelUs
()

как отсортировать числовую таблицу?

имеется текстовая таблица с числами, каждый столбец через табуляцию

сначала я заметил, что sort -n игнорирует знаки

OK, написал через awk прибавление модуля наименьшего элемента в столбце к каждому элементу, потом сортировка, потом его вычитание

теперь заметил, что он сортирует по первым цифрам, например

102	
116	
150	
46	
66	
80	
91	

дальше продолжать писать костыли для sort'а нет желания, в связи с чем вопрос:

есть ли в командной строке UNIX что-нибудь специально для таких числовых таблиц? или вдруг может awk такое умеет?

 , ,

FeelUs
()

emacs lisp файлы

подскажите пожалуйста,

Как открыть/закрыть файл на чтение/на запись (без отображения его в буфере)?

Как читать/писать списки в/из файлов?

Какие вообще есть структуры данных в эмакс-лиспе, помимо cons-ячеек, строк и чисел? Я слышал про массивы и хеш-таблицы. Какой у них синтаксис? Можно ли их также читать/писать в/из файлы как и списки?

 ,

FeelUs
()

find 2 прохода за 1

а может ли find выполнять условие1 действие1 и независимо от них условие2 действие2, чтобы не совершать второй проход условием2 и действием2 повторно?

что-то читаю этот нерусский ман и не пойму...

 

FeelUs
()

как вывести текущие кавычки в m4?

понятно, что это можно сделать изменив текущие кавычки, вывести нужный символ, и вернуть прежние кавычки

но я хочу какой-нибудь более короткий способ: например макрос, выводящий кавычку, или макрос, выводящий заданный текст в кавычках

и как-то странно, что нет тега m4, по этому использую m4a =)

 ,

FeelUs
()

зачем нужен mbstate в функциях wcrtomb и wcsrtombs?

при преобразованиях mb(s)rtowc(s) mbstate хранит недоразобранное начало mb-символа (и при повторном вызове начинает разбирать оставшуются часть символа).

при преобразовании wcsrtombs я предположил, что mbstate хранит недовыведенный (в выходную строку) конец mb-символа, но тест показал, что это не так (в gcc со стандартной комплектацией в cygwin'е).

а при wcrtomb вообще не понятно зачем он нужен, если wcrtomb не может выводить (в выходную строку) более MB_CUR_MAX байтов, т.е. более одного в общем случае символа.

собственно зачем?

 ,

FeelUs
()

как вернуть значение переменной из порожденного интерпретатора?

echo $PATH | while read -d : p; do
                     [ -e "$p"/"$name" ] && { name="$p"/"$name"; break; }
                 done

как известно в конвейерах все команды запускаются в порожденных интерпретаторах

возможно я не совсем правильно ищу файл

но все-таки такой вопрос возникал у меня раньше и на других примерах

 

FeelUs
()

а может ли awk..?

строку типа

$1 $2 $3 ... $n

превратить в строки

$1 $2
$1 $3
....
$1 $n
и так с каждой строкой (у строк n - разное, у каждой свое)

 

FeelUs
()

подскажите утилитку, которая постоянно вызывает заданную команду

и выводит вывод этой команды в одно и тоже место экрана

(видел такую месяц назад, а сейчас пондобилась - вспомнить как называется не могу)

 , ,

FeelUs
()

подсчитать количество строк выводимого

почему это работает?

com | tee >(wc -l ; echo \^ total lines)

это не работает?

com | tee >(wc -l ; echo \^ total lines) | head -n 3

это работает, но неправильно?

com | tee >(wc -l >&2; echo \^ total lines >&2) | head -n 3

а это работает, но результат зависит от количества котиков?

com | tee >(wc -l >&2; echo \^ total lines >&2) | cat | cat | head -n 3

здесь com - произвольная команда

 

FeelUs
()

перенаправление и получение статуса

com1 | com2

? как узнать статус выполнения com1 ?

 

FeelUs
()

помогите собрать программу

после конфигурирования команда make выдает следующее

Making all in src
make[1]: вход в каталог «/usr/src/LHAPDF-6.1.0/src»
 cd .. && /bin/sh /usr/src/LHAPDF-6.1.0/config/missing automake-1.13 --gnu src/Makefile
configure.ac:10: error: version mismatch.  This is Automake 1.13.4,
configure.ac:10: but the definition used by this AM_INIT_AUTOMAKE
configure.ac:10: comes from Automake 1.13.3.  You should recreate
configure.ac:10: aclocal.m4 with aclocal and run automake again.
WARNING: 'automake-1.13' is probably too old.
         You should only need it if you modified 'Makefile.am' or
         'configure.ac' or m4 files included by 'configure.ac'.
         The 'automake' program is part of the GNU Automake package:
         <http://www.gnu.org/software/automake>
         It also requires GNU Autoconf, GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/autoconf>
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
Makefile:427: ошибка выполнения рецепта для цели «Makefile.in»
make[1]: *** [Makefile.in] Ошибка 63
make[1]: выход из каталога «/usr/src/LHAPDF-6.1.0/src»
Makefile:538: ошибка выполнения рецепта для цели «all-recursive»
make: *** [all-recursive] Ошибка 1

я ведь где-то читал, что ./configure и Makefile не должны использовать ни automake ни autoconf???

 

FeelUs
()

утилита, добавляющая время в начало каждой строки

утилита, читающая stdin, добавляющая в начало каждой строки текущее время или время с начала запуска программы или текущее минус заданное, и печатающая это на stdout.

перед тем, как написать самому, решил спросить, может существует сабж в природе?

 

FeelUs
()

как сделать, чтобы все, что выводилось в консоль, сохранялось в файл?

сабж

в линуксе

и в цигвине

 ,

FeelUs
()

RSS подписка на новые темы