Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Заблокирован

Число "файлов-hs" в программе HaskellPlatform-8.0.1

05.09.2016, 14:14. Показов 2737. Ответов 31

Студворк — интернет-сервис помощи студентам
Привет всем программистам Haskell!

Помогите, пожалуйста, с анализом программ. Не могу удержаться как Буратино, всюду сую свой длинный нос.

Как подсчитать число файлов-hs на HaskellPlatform-8.0.1? Неужели надо открывать Проводник, считая визуально вручную число элементов по каждой папке?

Пожалуй, устанешь пыль глотать!

Как написать код на Haskell, способный выдать точное число файлов с расширениями: *.hs, *.ехе, *.docs, *.html?
Хочется узнавать сразу как по программе (платформе) в целом, так и по каждому каталогу (папке).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2016, 14:14
Ответы с готовыми решениями:

История открытых/созданных файлов в программе файлов (история), записывать в файл либо бд, или ещё как-то
Ребят, помогите нужно сделать историю открытых/созданных файлов в menustrip1 Как это сделать? Занести имена файлов и путь, можно ещё по...

Какое число необходимо подать на вход программе, чтобы было выведено число 5311?
какое число необходимо подать на вход программе, чтобы было выведено число 5311? var n: integer; begin readln(n); writeln(n div...

На вход программе подается беззнаковое 32-битное целое число N и натуральное число K (1 ≤ K ≤ 31). Требуется взять K под
На вход программе подается беззнаковое 32-битное целое число N и натуральное число K (1 ≤ K ≤ 31). Требуется взять K подряд идущих битов...

31
Заблокирован
06.09.2016, 12:42  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Catstail Посмотреть сообщение
Ты его превратишь в exe-файл. Сделать это можно так
Catstail!
Пытаюсь запустить вновь созданый "fcount.exe". Он появляется мельком на четверть секунды. И всё! Что делать?

В Командной Строке делал следующее,картинка ниже:
Haskell
1
2
3
4
5
6
7
8
9
10
11
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
 
C:\Windows\system32>cd C:\Users\admin\Documents\MyHaskell
C:\Users\admin\Documents\MyHaskell>ghc -prof -fprof-auto -rtsopts fcount.hs
[1 of 1] Compiling Main             ( fcount.hs, fcount.o )
Linking fcount.exe ...
C:\Users\admin\Documents\MyHaskell>fcount>C:\Program Files\Haskell Platfopm\
C:\Users\admin\Documents\MyHaskell>fcount C:\Program Files\Haskell Platfopm\
fcount: user error (Pattern match failure in do expression at fcount.hs:24:3-15)
C:\Users\admin\Documents\MyHaskell>
Миниатюры
Число "файлов-hs" в программе HaskellPlatform-8.0.1   Число "файлов-hs" в программе HaskellPlatform-8.0.1  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
06.09.2016, 13:59
balky02, ты что, не в состоянии выполнить инструкцию, которую тебе написали? У fcount.exe ДВА параметра - имя директории (ты его задал), потом пробел и строка .hs Я же написал...
0
Заблокирован
06.09.2016, 16:00  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Я же написал...
Catstail!
Проверил. Толку нет. Файл fcount.exe также мельком...

Код почти ничего не умеет делать. Рождённый ползать — летать не может.
Любой может проверить мои слова.

Создаем новую директорию: C:\Users\admin\Documents\fcount — картинка ниже.
Исходный код — fcount.hs:
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import System.IO
import System.Directory
import System.Environment
 
chkFile :: String -> String -> Bool
chkFile fnam ext | (lf < lext) = False
                 | (drop (lf-lext) fnam) == ext = True
                 | otherwise = False
                 where lf = length fnam
                       lext = length ext
               
scan :: String -> String -> IO [String]               
scan fnam ext = do
 isDir <- doesDirectoryExist fnam
 if isDir then do
    files <- getDirectoryContents fnam
    let aFiles = filter (not . (`elem` [".", ".."])) files
    res <- mapM (\ fil -> scan (fnam ++ "" ++ fil) ext) aFiles
    return $ concat res    
 else
    return $ if chkFile fnam ext then [fnam] else []
                       
main = do
  [homeDir,ext]  <- getArgs
  flst <- scan homeDir ext
  mapM putStrLn flst
Запускаем Командную Строку от Администратора — cmd.exe

Нам нужно будет отдать последовательно следующие команды:
Haskell
1
2
3
4
5
6
7
8
9
10
11
cd C:\Users\admin\Documents\fcount
 
ghc -prof -fprof-auto -rtsopts fcount.hs
 
fcount C:\Users\admin\Documents\fcount .hs
 
fcount C:\Users\admin\Documents\MyHaskell .hs
 
fcount C:\Program Files\Haskell Platfopm .hs
 
fcount C:\Program Files\Java .hs
Этот код (fcount.hs) никогда в жизни не найдёт:
Haskell
1
C:\Program Files\Java\jdk1.8.0_102\CoreJavaBook\1\2\3\ Matryoshka.hs
А Python нашёл Matryoshka.hs — за секунды! Это не оговорка. Остальные две минуты он перебирал все файлы и папки Java. Проверьте сами!

В жизни привык всё протоколировать, поэтому создал файл Command_Line_Protocol.txt — копия диалога с Командной Строкой, ниже привожу её как есть и полностью:
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
 
C:\Windows\system32>C:\Users\admin\Documents\fcount
"C:\Users\admin\Documents\fcount" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
 
C:\Windows\system32>cd C:\Users\admin\Documents\fcount
 
C:\Users\admin\Documents\fcount>ghc -prof -fprof-auto -rtsopts fcount.hs
[1 of 1] Compiling Main             ( fcount.hs, fcount.o )
Linking fcount.exe ...
 
C:\Users\admin\Documents\fcount>fcount C:\Users\admin\Documents\fcount\ .hs
C:\Users\admin\Documents\fcount\fcount.hs
 
C:\Users\admin\Documents\fcount>fcount C:\Program Files\Haskell Platfopm\ .hs
fcount: user error (Pattern match failure in do expression at fcount.hs:24:3-15)
 
 
C:\Users\admin\Documents\fcount>fcount C:\Program Files\Haskell Platfopm .hs
fcount: user error (Pattern match failure in do expression at fcount.hs:24:3-15)
 
 
C:\Users\admin\Documents\fcount>
C:\Users\admin\Documents\fcount>fcount C:\Users\admin\Documents\MyHaskell .hs
C:\Users\admin\Documents\MyHaskellMyPlagiarism.hs
C:\Users\admin\Documents\MyHaskellMyPath.hs
C:\Users\admin\Documents\MyHaskellMyHask6.hs
C:\Users\admin\Documents\MyHaskellMyHask5.hs
C:\Users\admin\Documents\MyHaskellMyHask4.hs
C:\Users\admin\Documents\MyHaskellMyHask3.hs
C:\Users\admin\Documents\MyHaskellMyHask2.hs
C:\Users\admin\Documents\MyHaskellMyHask1.hs
C:\Users\admin\Documents\MyHaskellMyHask.hs
C:\Users\admin\Documents\MyHaskellMyFilesHs5.hs
C:\Users\admin\Documents\MyHaskellMyFilesHs2.hs
C:\Users\admin\Documents\MyHaskellMyFilesHs.hs
C:\Users\admin\Documents\MyHaskellMyCalculator2.hs
C:\Users\admin\Documents\MyHaskellMyCalculator.hs
C:\Users\admin\Documents\MyHaskellfcount.hs
 
C:\Users\admin\Documents\fcount>fcount C:\Program Files\Java .hs
fcount: user error (Pattern match failure in do expression at fcount.hs:24:3-15)
 
 
C:\Users\admin\Documents\fcount>fcount C:\Program Files\Java\ .hs
fcount: user error (Pattern match failure in do expression at fcount.hs:24:3-15)
 
 
C:\Users\admin\Documents\fcount>fcount C:\Users\admin\Documents\fcount .hs
C:\Users\admin\Documents\fcountfcount.hs
 
C:\Users\admin\Documents\fcount>
Миниатюры
Число "файлов-hs" в программе HaskellPlatform-8.0.1   Число "файлов-hs" в программе HaskellPlatform-8.0.1  
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
06.09.2016, 16:02
Во славу торжества разнообразия :
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(defn dir-list (dir)
    (def file (java (class "java.io.File") "new" (java dir "toString")))
 
    (defmacro array-to-LinkedList (a)
        java (class "java.util.LinkedList") "new"
            (java (class "java.util.Arrays") "asList" a) )
 
    (defn map-LinkedList (f l)
        (defn go (n a) cond (< n 0) a
            (go (- n 1) (cons (f (java l "get" n)) a)) )
        (go (- (java l "size") 1) nil))
 
    (defn go (file)
        cond (java file "isFile") (java file "getName")
             (java file "isDirectory")
                 (cons (java file "getName") (map-LinkedList go
                     (array-to-LinkedList (java file "listFiles")) ))
             (++ "Не существует файл " (java file "getName")) )
    (go file))
 
(defn foldl-last (f g a l)
    (defn go (a l) (cond (null? l) a
                         (null? (cdr l)) (g (car l) a)
                         (go (f (car l) a) (cdr l)) ))
    (go a l))
 
(defn show-tree (t)
    (defn go (t v)
        (defn f (c d)
            lambda (x a) ++ a \n v "|" \n v c "- " (go x (++ v d "  ")))
        (cond (list? t)
            (++ "<" (car t) ">"
                (foldl-last (f "+" "|") (f "`" " ") "" (cdr t)))
        t))
    (go t ""))
 
(def l (dir-list "C:\\Users\\Ivana\\Desktop\\Liscript"))
(++ l \n \n (show-tree l))
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
=> (Liscript (demo 01_interpreter_basics.liscript 02_liscript_basics.liscript 03_demo_examples.liscript 04_demo_streams.liscript Деревья.liscript Осциллирующий овал.liscript Прыгающие мячики.liscript Рябина.liscript Тетрис.liscript Фигуры Лиссажу.liscript Часы.liscript) Liscript.jar settings.xml standard_library.liscript start.bat start_32Mb.bat (themes (123 (456)) Светлая.xml Темная.xml))
 
<Liscript>
|
+- <demo>
|  |
|  +- 01_interpreter_basics.liscript
|  |
|  +- 02_liscript_basics.liscript
|  |
|  +- 03_demo_examples.liscript
|  |
|  +- 04_demo_streams.liscript
|  |
|  +- Деревья.liscript
|  |
|  +- Осциллирующий овал.liscript
|  |
|  +- Прыгающие мячики.liscript
|  |
|  +- Рябина.liscript
|  |
|  +- Тетрис.liscript
|  |
|  +- Фигуры Лиссажу.liscript
|  |
|  `- Часы.liscript
|
+- Liscript.jar
|
+- settings.xml
|
+- standard_library.liscript
|
+- start.bat
|
+- start_32Mb.bat
|
`- <themes>
   |
   +- <123>
   |  |
   |  `- <456>
   |
   +- Светлая.xml
   |
   `- Темная.xml
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
06.09.2016, 16:54
Цитата Сообщение от balky02 Посмотреть сообщение
Нам нужно будет отдать последовательно следующие команды:
- не нужно. Я же писал, что мой код перечисляет все файлы с заданным расширением. Он не ищет отдельный файл.

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import System.IO
import System.Directory
import System.Environment
 
chkFile :: String -> String -> Bool
chkFile fnam ext | (lf < lext) = False
                 | (drop (lf-lext) fnam) == ext = True
                 | otherwise = False
                 where lf = length fnam
                       lext = length ext
               
scan :: String -> String -> IO [String]               
scan fnam ext = do
 isDir <- doesDirectoryExist fnam
 if isDir then do
    files <- getDirectoryContents fnam
    let aFiles = filter (not . (`elem` [".", ".."])) files
    res <- mapM (\ fil -> scan (fnam ++ "\" ++ fil) ext) aFiles   -- здесь должен быть не один, а два бэкслэша !!!
    return $ concat res    
 else
    return $ if chkFile fnam ext then [fnam] else []
                       
main = do
  [homeDir,ext]  <- getArgs
  flst <- scan homeDir ext
  mapM putStrLn flst
Создаем твою матрешку и проверяем:
Миниатюры
Число "файлов-hs" в программе HaskellPlatform-8.0.1  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
06.09.2016, 16:57
Да, если имя директории содержит пробелы, то при запуске его нужно заключать в двойные кавычки. Правило windows.
1
Заблокирован
07.09.2016, 22:28  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
мой код перечисляет все файлы с заданным расширением
Catstail!
Спасибо за всё!
Поясняю: зачем мне эта тема? В других темах, например: Установка Haskell Platform для Windows 7 — ругаю отечественных авторов за подачу материала. Угнетает обилие теории, без примеров и практики.

Пытался самостоятельно исследовать: установленную HaskellPlatform — несколько дней бродил по её закоулкам. Была надежда, вдруг наткнусь на яркие примеры. Находил только интересную литературу, например: "GHC Users Guide Documentation Release 8.0.1" (1911 Кб).

Нет ни одного примера, поразился флегматичности и бестолковости разработчиков HaskellPlatform. Не думают о будущем языка.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
07.09.2016, 23:32
balky02, так кредо разработчиков haskell - "избегать популярности любой ценой" (С) И это не шутка, можете нагуглить - это прямая цитата. И, почитав, к примеру, эту тему, их можно понять
0
Заблокирован
08.09.2016, 00:23  [ТС]
Цитата Сообщение от _Ivana Посмотреть сообщение
это прямая цитата
_Ivana!
Популярность — по сути: спрос на язык. Производители вынуждены прибегать к рекламе, как борьбе с конкурентами.
Этот чудаковатый Саймон Пейтон Джонс (http://fprog.ru/2010/issue6/in... ton-jones/) — как будто сторонник секты непротивления злу, уж очень напоминает Сентиментального Боксёра у В. Высоцкого.

Боюсь, конец будет у Haskell — плачевный, съедят его заживо другие языки программирования. Законы рынка жестоки.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
08.09.2016, 08:14
balky02, не нужно начинать с ругани... Если что-то не получается - проверь себя 1000 раз, прежде, чем ругать язык, среду разработки и т.п. Я формулирую эту мысль в виде принципа:

Дверь и форточка

Если что-то упорно не получается, не упирайся, а подумай: не пытаешься ли ты пролезть в форточку, когда рядом открытая дверь?
0
Заблокирован
08.09.2016, 11:50  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Если что-то не получается - проверь себя 1000 раз
Catstail!
Мне не хочется писать пустые фразы вроде: подвергнуть критике, анализировать негативные явления и т.д. Не провожу кастрацию выразительности нашей речи. Стараюсь писать ясно — ругаю! Людям сразу понятно: о чём речь.

Вначале работаю корректировщиком огня по семантическим полям русского языка!
Саймон: Я обычно рисую график популярности Haskell http://fprog.ru/2010/issue6/in... ton-jones/ . Ага-а!! Сам признался, что не чужд человеческим слабостям.
Ладно, Саймон добился успеха в жизни — сыт, пьян и нос в табаке.

А каково его адептам (приверженцам)?
tangro ( 10 февраля 2012 в 01:50): выпускнику ВУЗа будет очень тяжело найти материалы\учителя\проекты на этих языках, а значит и заработать деньги. https://habrahabr.ru/post/137926/
Google: График популярности Haskell за 2000-2015 годы
Google: График популярности Haskell Platform за 2000-2015 годы
Нет в жизни счастья!

Хорошо, поведём стрельбу по целям на английском языке!
Google: Schedule Haskell popularity over the period 2000-2015
Google: Schedule Haskell Platform popularity over the period 2000-2015

Ничего нет! Помогите, пожалуйста, найти графики. Для меня очень важно узнать реальную картину. Где же она, правда-матка?!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
08.09.2016, 12:24
balky02, у меня складывается впечатление, что ты хочешь не столько программировать, сколько критиковать... Я прав? Если нет - напиши что-нибудь свое, законченное. Опубликуй, а мы покритикуем. А если я прав - то тебе, вероятно, будет комфортнее в разделе "Священные войны".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.09.2016, 12:24

Задача python / pascal: В первой строке программе подается на вход число натуральное число n, не превышающее 1000
В аркадной компьютерной игре звездный истребитель может выполнить одну из пяти команд. Команды игрока компьютеру подаются вместе с блоком...

Открытие файлов в программе
Как сделать открытие файла при перетаскивании на окно созданной программы? Также хотелось бы сделать открытие с помощью этой программы по...

Обновление файлов в программе
Есть программа(Лаунчер) в ней есть возможность скачать файлы программы и запускать после распаковки. Интересует можно ли сделать обновление...

Записать в выходной файл умноженное каждое чётное число на первое отрицательное число файлов.
Записать в выходной файл умноженное каждое чётное число на первое отрицательное число файлов.

Написать программу "Угадай число". В программе задается число. С ним она сравнивает числа, вводимые с клавиату
с помощью GOTO


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Задача: Программно добавить префикс в нумерацию документов в самописной конфигурации на БСП (помощь начинающему коллеге). Решение: В модуле объекта документа размещен следующий код: Процедура. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru