powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать прогу на Lisp
116 сообщений из 116, показаны все 5 страниц
Помогите написать прогу на Lisp
    #37493564
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите написать прогу на Lisp если можно с комментариями!!!! срочно!!!

Скласти рекурсивну функцію для обробки списку з будь-якої кількості атомів, які складені з будь-яких знаків. Якщо у результаті обробки з атому видалені всі знаки, замінити його на атом <ПУСТО>.
У кожному списку замінити літери англійського алфавіту на відповідний номер у алфавіті (aф6Гs4 -> 1ф6Г194)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493687
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493697
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська , Вам сюда http://www.lisp.ru. Там есть форум для студентов.
Тока переведите задание, ИМХО російською зручніше.

И + я не поняла, в задании, про удаление символов. Когда они удаляются? Мож просто Lisp не знаю.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493735
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Само задание вот: в каждом списке заменить буквы английского алфавита на их порядковый номер в алфавите. Вот пример как должно быть (aф6Гs4 -> 1ф6Г194)
а предусловие, это то что надо использовать рекурсию
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493753
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оце так! Не успела продать выпускное платье - уже погрузилась
в пучину It-шной кутерьмы.

Яб тебе помог но нифига не шарю в Лисп. Так. Теоретицски....
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493768
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
при чем тут выпускное платье???
я чет туплю=)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493770
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаськая чет туплю
Гы. Значит пора за косы подергать.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493771
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такого метода я незнаю

Я вообще тихоня был в школе....
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493865
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська,
не понятно, откуда могут взяться атомы с удаленными знаками? Есть правило замены латинских букв номерами, но нет никакого правила удалания каких-либо символов." видалені всі знаки" - это "удалены все знаки"?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493892
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то общее задание, а вот Само задание вот: в каждом списке заменить буквы английского алфавита на их порядковый номер в алфавите. Вот пример как должно быть (aф6Гs4 -> 1ф6Г194)
надо использовать рекурсию
Просто у меня надо сделать вот это.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37493939
trуц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(вы (бы (хоть (версию (LISP-а сказали))))), для scheme например один из вариантов вот так
если нет map-а
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
(define (mymap func lst)
  (if (null? lst)
      lst
      (cons (func (car lst)) (mymap func (cdr lst)))))

(define (replace-chars items)
  (mymap 
    (lambda (item) 
      (if (char? item)
        (+  1  (- (char-code (char-downcase item)) (char-code #\a)))
        item)) 
    items))
если есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
(define (replace-chars items)
  (map 
    (lambda (item) 
      (if (char? item)
        (+  1  (- (char-code (char-downcase item)) (char-code #\a)))
        item)) 
    items))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37494126
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извините за какой лисп забыла написать...comonLisp
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37494414
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська,
совсем не специалист в lisp, но что-то получилось:transform_list.lisp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
(defun latin (x) (and (alpha-char-p x) (standard-char-p x)))
(defun letter-num(x) (- (char-code (char-upcase x)) ( 1 - (char-code #\A))))
(defun transform-symb (x)
        (cond ((latin x) (princ-to-string (letter-num x)))
                (t (string x))
                ))
(defun transform-list-of-symb(list res) (cond
        ((null list) res)
        (t (transform-list-of-symb (cdr list) (append res (list (transform-symb (car list))) )))))
(defun transform-string(string) (apply #'concatenate 'string (transform-list-of-symb (coerce string 'list) nil)))
(defun transform-node(node)(cond
        ((stringp node) (transform-string node))
        ((symbolp node) (read-from-string (transform-string (symbol-name node))))
        (t (princ-to-string (list "Can't transform "  node " of type " (type-of node))))))
(defun do-transform(list res) (cond
        ((null list) res)
        (t (do-transform (cdr list) (append res (list (transform-node (car list))))))))
(defun transform(list) (do-transform list nil))
Пример рвботы
Код: plaintext
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.
clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Welcome to GNU CLISP 2.44.1 (2008-02-23) < http://clisp.cons.org/> 

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2008

Type :h and hit Enter for context help.

[1]> (load "transform_list.lisp")
;; Loading file transform_list.lisp ...
;; Loaded file transform_list.lisp
T
[2]>  (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(111 12ФИ |123-111| 1123 Б1 "(Can't transform  'A123  of type  CONS)"
 "(Can't transform  'Щ234  of type  CONS)")
[3]>  (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" 1123 Б1 "(Can't transform  'A123  of type  CONS)"
 "(Can't transform  'Щ234  of type  CONS)")
[4]>(transform '(aф6Гs4))
(1Ф6Г194)
[5]> 
Какие-то атомы обрабатываются, какие-то не совсем. "Допиливайте" сами.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37495318
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))

Код: plaintext
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.
(defconstant latin-offset #.(1- (char-code #\a)))

(defun latin-char-p (char)
  (and (standard-char-p char)
       (alpha-char-p    char)))

(defun latin-char-to-ord (char)
  (- (char-code (char-downcase char)) latin-offset))

(defun transform-character (char)
  (format nil "~a"
          (if (latin-char-p char)
              (latin-char-to-ord char)
              char)))

(defun transform-string (string)
  (apply #'concatenate 'string (map 'list #'transform-character string)))

(defun transform-symbol (symbol)
  (intern (transform-string (string symbol))))

(defun transform-list (list)
  (if (null list)
      list
      (let ((head (car list))
            (tail (cdr list)))
        (cons (transform      head)
              (transform-list tail)))))

(defun transform (any)
  (cond ((characterp any) (transform-character any))
        ((stringp any)    (transform-string    any))
        ((symbolp any)    (transform-symbol    any))
        ((listp any)      (transform-list      any))
        ( t          (transform-string (format nil "~a" any)))))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496120
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinavb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))
...
Ну это я знаю. Ведь что-то про lisp я уже прочитал.

Но, к сожалению, у Вас результат тоже не идеальный:
Код: plaintext
1.
2.
3.
4.
5.
6.
Break 1 [2]> (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(|111| 12ФИ |123-111| |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '(aф6Гs4))
(1Ф6Г194)
Налицо лишние знаки "|" и 'Щ234, например, переходит в (|172115205| Щ234).
Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496228
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003,
"|" -- не лишние знаки =)
Код: plaintext
1.
2.
> (format t "~a ~s" '|a| '|a|)
a |a|
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496229
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Натаська ты как там? Жива?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496233
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003 'Щ234, например, переходит в (|172115205| Щ234).
и правильно переходит, т.к. 'Щ234 -- это (QUOTE Щ234), а QUOTE -- это 172115205

avb1003Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.
Вы немного недопоняли лисп, я же написал во что превращается это ваше выражение после его чтения "лиспом", зачем Вы там внутри поставили еще кавычки?

эти кавычки исчезают после работы Reader'а и исходное выражение
Код: plaintext
(transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
превращается в
Код: plaintext
(transform (quote (aaa abфи 123-aaa A123 БA (quote A123) (quote Щ234))))
так его видит компилятор, первая особая форма QUOTE вычисляется, две другие -- нет, т.к. они сами "зацитированы" первой QUOTE и интерпретируются компилятором просто как символы, ничем не отличающиеся от aaa например
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496252
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003,

собственно, если хотите, можете свою функцию transform-node переписать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(defun transform-node (node)
  (cond
    ((stringp node) (transform-string node))
    ((symbolp node) (intern (transform-string (symbol-name node))))
    ((consp node) (transform-cons node))
    (t (format nil "#<Can't transform ~s of type ~a" (type-of node)))))

(defun transform-cons (node)
  ;; Transforming cons node function
  ;; for example with excluding QUOTE:
  (destructuring-bind (head . tail) node
    (let ((hd (if (eq 'quote head) 'quote (transform-node head))))
      (cons hd (transform-node tail)))))
не проверял, но должно работать
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496254
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, вместо
Код: plaintext
1.
(t (format nil "#<Can't transform ~s of type ~a" (type-of node)))))
нужно
Код: plaintext
1.
(t (format nil "#<Can't transform ~s of type ~a>" node (type-of node)))))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496264
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinavb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))
...
Ну это я знаю. Ведь что-то про lisp я уже прочитал.

Но, к сожалению, у Вас результат тоже не идеальный:
Код: plaintext
1.
2.
3.
4.
5.
6.
Break 1 [2]> (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(|111| 12ФИ |123-111| |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '(aф6Гs4))
(1Ф6Г194)
Налицо лишние знаки "|" и 'Щ234, например, переходит в (|172115205| Щ234).
Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496265
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvin...
не проверял, но должно работатьНу и кто за Вас будет проверять? Пушкин что-ли?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496266
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinВы немного недопоняли лисп ...
Может быть Пока да. Пока я считаю его нормальным языком, на котором можно сделать все то же, что и на С, на ассемблере и т.д.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496267
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003k0rvinavb1003,

потому что '(aaa abфи 123-aaa A123 БA 'A123 'Щ234) фактически является '(aaa abфи 123-aaa A123 БA (QUOTE A123) (QUOTE Щ234))
...
Ну это я знаю. Ведь что-то про lisp я уже прочитал.

Но, к сожалению, у Вас результат тоже не идеальный:
Код: plaintext
1.
2.
3.
4.
5.
6.
Break 1 [2]> (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234))
(|111| 12ФИ |123-111| |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '("aaa" "abфи" "123-aaa" A123 БA 'A123 'Щ234))
("111" "12фи" "123-111" |1123| Б1 (|172115205| |1123|) (|172115205| Щ234))
Break 1 [2]> (transform '(aф6Гs4))
(1Ф6Г194)
Налицо лишние знаки "|" и 'Щ234, например, переходит в (|172115205| Щ234).
Я понял условие так, что (transform '(aaa abфи 123-aaa A123 БA 'A123 'Щ234)) должно давать
(111 12ФИ 123-111 1123 Б1 '1123 'Щ234). Мне это пока не под силу (ну, по крайней мере, за разумное время и с разумными усилиями, да и неизвестно, нужно ли это топикстартеру), но на полное решение я с удовольствием бы посмотрел.Браузер, наверное, дублирует сообщения из истории. Sorry.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37496596
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003k0rvinВы немного недопоняли лисп ...
Может быть Пока да. Пока я считаю его нормальным языком, на котором можно сделать все то же, что и на С, на ассемблере и т.д.
Аналогия неверна. Её надо перевернуть наоборот. На С и ассемблере (на уровне языка)
принципиально невозможно воспроизвести некоторые возможности Lisp.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497250
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonavb1003пропущено...
Может быть Пока да. Пока я считаю его нормальным языком, на котором можно сделать все то же, что и на С, на ассемблере и т.д.
Аналогия неверна. Её надо перевернуть наоборот. На С и ассемблере (на уровне языка)
принципиально невозможно воспроизвести некоторые возможности Lisp.

эт точно.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497351
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003Ну и кто за Вас будет проверять? Пушкин что-ли?
мне какая разница? оно же Вам нужно, не мне, Вы и проверяйте
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497378
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОце так! Не успела продать выпускное платье

так делают все форумчане, при виде женского ника?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497406
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNmaytonОце так! Не успела продать выпускное платье

так делают все форумчане, при виде женского ника?
Нет только я.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497411
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonZyK_BotaNпропущено...


так делают все форумчане, при виде женского ника?
Нет только я.

я просто тоже так делаю )), вот и удивился.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497636
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мальчики, помрешь с вами. Встретились.
А девушка то не лямбда, уведут, ухари с lisp.ru
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497655
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinavb1003Ну и кто за Вас будет проверять? Пушкин что-ли?
мне какая разница? оно же Вам нужно, не мне, Вы и проверяйтеМне?! Зачем? Нет. Конечно, если бы это мне нужно было сделать курсовую, то да. А так - меня не интересуют творения программистов, которые не проверяют свои программы. К тому же один раз я Вас уже проверил.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497659
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВМальчики, помрешь с вами. Встретились.
А девушка то не лямбда, уведут, ухари с lisp.ru

и не говори ))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497660
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003k0rvinпропущено...

мне какая разница? оно же Вам нужно, не мне, Вы и проверяйтеМне?! Зачем? Нет. Конечно, если бы это мне нужно было сделать курсовую, то да. А так - меня не интересуют творения программистов, которые не проверяют свои программы. К тому же один раз я Вас уже проверил.

ты не уважешь Д. Кнута?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497757
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNИринаВМальчики, помрешь с вами. Встретились.
А девушка то не лямбда, уведут, ухари с lisp.ru

и не говори ))
Те еще худшие ботаны... Давай с нами тусить, Ирэн. Тут хоть ПТ есть, а у функциональщиков только круглые скобочки
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497841
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык я и так тута. Правда больше в Delphi.
Lisp не знаю (тока теоретиццки), но с ентим не согласна, в принципе:
maytonНа С и ассемблере (на уровне языка) принципиально невозможно воспроизвести некоторые возможности Lisp.
Если С (или Delhi), то почему нельзя, построить лиспо-подобную систему функций? Если надо?
Ассемблер да, это другое, согласна.

ЗЫ. Кнута уважаю. И Тьюринга.

ЗЫЗЫ. В ПТ заходила. Тока там политики много.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497861
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВmaytonНа С и ассемблере (на уровне языка) принципиально невозможно воспроизвести некоторые возможности Lisp.
Если С (или Delhi), то почему нельзя, построить лиспо-подобную систему функций? Если надо?

лисп -- это далеко не только функции =)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497928
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinлисп -- это далеко не только функции =)
Атож. Еще рекурсия и сртуктура данных. Рекурсия везде есть. И структуру данных, ИМХО можно построить, списочную. Не?
Те. я хочу сказать: что можно построить систему элементов, к-рые будут гармонироать с исходным языком (процедурным), и при этом, внесут выраз. возможности функционального. Сорри если плохо излагаю.
Но все это ИМХО чиста размышлизм.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497930
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВДык я и так тута. Правда больше в Delphi.
Lisp не знаю (тока теоретиццки), но с ентим не согласна, в принципе:
maytonНа С и ассемблере (на уровне языка) принципиально невозможно воспроизвести некоторые возможности Lisp.
Если С (или Delhi), то почему нельзя, построить лиспо-подобную систему функций? Если надо?
Ассемблер да, это другое, согласна.

ЗЫ. Кнута уважаю. И Тьюринга.

ЗЫЗЫ. В ПТ заходила. Тока там политики много.

нельзя, плохо знаешь лисп, а в частности - коммон лисп.
Коммон Лисп - это не только набор ф-ий, но и мощный рантайм и развитая система макросов.
си - курит в сторонке.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497932
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВk0rvinлисп -- это далеко не только функции =)
Атож. Еще рекурсия и сртуктура данных. Рекурсия везде есть. И структуру данных, ИМХО можно построить, списочную. Не?
Те. я хочу сказать: что можно построить систему элементов, к-рые будут гармонироать с исходным языком (процедурным), и при этом, внесут выраз. возможности функционального. Сорри если плохо излагаю.
Но все это ИМХО чиста размышлизм.

ты не знаешь лиспа. более того, ты даже с ним не знакома...
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497947
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВАтож. Еще рекурсия и сртуктура данных. Рекурсия везде есть. И структуру данных, ИМХО можно построить, списочную. Не?Те. я хочу сказать: что можно построить систему элементов, к-рые будут гармонироать с исходным языком (процедурным), и при этом, внесут выраз. возможности функционального. Сорри если плохо излагаю.
Но все это ИМХО чиста размышлизм.
Нет. Lisp предлагает другой подход к программированию в принципе. Он не разделяет код и данные.
Тоесть ты можешь "исполнять данные" прямо в рантайме. Подобное можно повторить только если
в runtime С++ной программы вставить исполняющую машину Lisp. Но это уже будут совершенно
другие условия эксперимента.

Кстати пару дней назад умер замечательный человек. Мега-мозг и сумрачный гений, номинант
премии тьюринга Джон МакКарти. Создатель этого языка. Вместе с ним ушла целая эпоха.
И наш долг - сохранить те ценности которые он принёс.

Светлая ему память.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497949
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNнельзя
Почему?
ZyK_BotaNне только набор ф-ий, но и мощный рантайм и развитая система макросов.
Дык любой макрос можно сделать функцией. А ран-тайм сделаем, под наши функции.
Другое дело: под интерпреатором можно (теоретицки) менять программу, на ур. языка. Тут не знаю, реально ли этим пользуются в Lispе, но подозреваю что нет. А если да, то возьмем интерпретатор С (или сами сделаем), и получим тож самое.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497955
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВДык любой макрос можно сделать функцией.

ага. сделай мне ленивую версию ф-и логического "и" и "или".
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497956
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonдругой подход к программированию в принципе
Вот! Тут согласна.
Про код/данные ответила выше.

maytonИ наш долг - сохранить те ценности которые он принёс
Ну долг, это ИМХО слишком. А вот тот факт, что Lisp используют, 50 уже лет, это правда серьезно.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497958
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ,

ознакомся для начала с лиспом, а потом рассказывай сказки.

на лиспе нужно писать как на лиспе, а на си - как на си.
нельзя на си писать как на лиспе.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497959
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNсделай мне ленивую версию ф-и логического "и" и "или".
А в чем тут проблема? Не, правда?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497961
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNсделай мне ленивую версию ф-и логического "и" и "или".
А в чем тут проблема? Не, правда?

в том что аргументы ф-и вычисляются до ее вызова(это верно конечно не для всех языков, а например для си и делфи)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497962
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNна лиспе нужно писать как на лиспе, а на си - как на си.
нельзя на си писать как на лиспе.
Гы, а кто ж спорит? Канеш нельзя. ИМХО и для разных они задач.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497963
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNна лиспе нужно писать как на лиспе, а на си - как на си.
нельзя на си писать как на лиспе.
Гы, а кто ж спорит? Канеш нельзя. ИМХО и для разных они задач.

ты сама себе противоречишь не?


з.ы. пример реализации ленивой функции "и" на си в студию.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497964
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNв том что аргументы ф-и вычисляются до ее вызова
Пока не въехала. Ну, до вызова.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497965
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ,

плохой у нас диалог что-то получился.

извиняюсь за свою резкость, но поверь майтону на слово, что

maytonАналогия неверна. Её надо перевернуть наоборот. На С и ассемблере (на уровне языка)
принципиально невозможно воспроизвести некоторые возможности Lisp.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497967
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNв том что аргументы ф-и вычисляются до ее вызова
Пока не въехала. Ну, до вызова.

ну и как тогда сделать так, что-бы если результат первого аргумента - false, второй аргумент не вычислялся?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497968
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВВот! Тут согласна.
Про код/данные ответила выше.
Лет несколько назад наш замечательный уютненький
посетил один чел по имени Ксено-Головый. И в его
декретах и посылах и прочих прокламациях
помимо жуткого вброса звенела одна истина,
касаемая современного императивного С++
программирования. А именно - оно идёт
не туда. К сожалению разработчики такие-же
люди, подверженные привычкам, и прочим
консервативным позициям. Просто возвращая
историю на 30 лет назад я-бы подумал на тему
того что некоторые вещи можно было-бы сделать
не так и по другому.

Нужно уметь признать ошибки. Это вобщем-то
касается не только технологий С/C++ а очень
очень многого.

По сабжу больше сказать нечего. И продолжать
эту тему я не буду. По кр. мере для меня
в ней всё давно ясно.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497970
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот, здесь объснены причины твоего заблуждения:


Парадокс БлабаСОВЕТ

Что же в Lisp-е такого прекрасного? Если он такой замечательный, почему его не используют все? Казалось бы, риторические вопросы, но на самом деле на них есть прямые ответы. Lisp настолько хорош не тем, что в нем есть некое волшебное качество, видимое только его приверженцам, а тем, что он — самый мощный язык программирования из существующих.

И причина того, что все вокруг пишут не на Lisp'е, заключается в том, что выбор языка программирования — вопрос не только технологии, но также и привычки, а ничто не меняется так медленно, как привычки. Конечно, оба эти тезиса требуют разъяснений.

Я начну с шокирующего утверждения: языки программирования отличаются друг от друга своей мощностью.

По крайней мере, мало кто будет спорить, что высокоуровневые языки мощнее машинного языка (машинный код и ассемблеры – VladD2). Большинство программистов согласятся, что, как правило, программировать стоит не на машинном языке, а на каком-нибудь языке высокого уровня, переводя программу в машинный код с помощью компилятора. Сейчас эта идея получила даже аппаратное воплощение — с восьмидесятых годов команды процессоров разрабатываются скорее для компиляторов, чем для программистов.

Каждый знает, что писать всю программу вручную на машинном языке — ошибочно. Но гораздо реже понимают, что существует и более общий принцип: при наличии выбора из нескольких языков ошибочно программировать на чем-то, кроме самого мощного, если на выбор не влияют другие причины (VladD2: выделено мной, мне кажется эта мысль очень важна, ведь если, например, более мощный язык не обеспечивает приемлемой производительности, то его выбор также будет неоправданным).

Все языки одинаково мощны, если рассматривать их с точки зрения эквивалентности машине Тьюринга, но это не та мощь, которая важна программисту. (Никто ведь не хотел бы программировать машину Тьюринга). Мощь языка, в которой заинтересован программист, возможно, трудно определить формальными методами, однако одно из объяснений этого понятия заключается в свойствах, которые в менее мощном языке можно получить, только написав на нем интерпретатор для более мощного языка. Если в языке A есть оператор для удаления пробелов из строк, а в языке B его нет, это не делает A более мощным, чем B, так как в B можно написать процедуру, которая делала бы это.

Но, скажем, если язык A поддерживает рекурсию, а B — нет, это нечто, что нельзя исправить написанием библиотечных функций (VladD2: впрочем, бывает так, что средствами языка B в принципе можно решить проблему, но решение ее столь сложно, что решение это можно назвать чисто теоретическим).

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

Если вы пишете программу, которая должна делать что-то очень простое, вроде численной обработки больших массивов данных или манипуляций с битами, можно использовать язык не самого высокого уровня абстракции, тем более что программа будет слегка быстрее (VladD2: и то не факт).

Если вы пишете короткую программу, которую используете один раз и выбросите прочь, возможно, следует использовать тот язык, который имеет лучшие библиотечные функции для данной задачи.

Но в целом для программного обеспечения нужно использовать самый мощный (и приемлемо эффективный) язык из всех доступных. Отличный от этого выбор — это ошибка такого же рода, как программирование в машинных кодах, хотя и с меньшими негативными последствиями.

Понятно, что уровень машинного языка очень низок. А высокоуровневые языки часто рассматриваются как одинаковые, по крайней мере, так принято считать. Но это не так. Технический термин "язык программирования высокого уровня" не обозначает ничего определенного. Не существует четкой границы между множеством "машинных" языков с одной стороны, и множеством "высокоуровневых" – с другой. Языки распределены в континууме (возможно, не просто континууме, а некой структуре, уменьшающейся кверху; важна здесь не форма, а сама идея о том, что существует, по крайней мере, частичный порядок) абстрактности, начиная от самых мощных "языков высокого уровня" вниз к "машинным языкам", которые, в свою очередь, тоже отличаются друг от друга по мощности.

Возьмем Cobol. Cobol — язык высокого уровня, так как компилируется в машинный язык. Но станет ли кто-нибудь утверждать, что по мощности Cobol эквивалентен, скажем, Python-у? (VladD2: учитывая свой опыт общения на форумах RSDN скажу, что, несомненно, станет:) ) Возможно, он ближе к машинному языку, чем Python.

А как насчет Perl четвертой версии? В Perl 5 в язык были добавлены лексические замыкания (lexical closures). Большинство Perl-хакеров согласятся, что Perl 5 мощнее, чем Perl 4. Но раз вы это признали, вы признали, что один высокоуровневый язык может быть мощнее другого. Из этого неизбежно следует, что использовать нужно самый мощный язык.

Впрочем, из этого утверждения редко делается вывод. Программисты старше определенного возраста редко меняют язык по своей воле. Они будут считать достаточно хорошим тот язык, к которому привыкли.

Программисты очень привязываются к своим любимым языкам, а я не хочу оскорбить ничьи чувства, поэтому я объясню свою позицию, используя гипотетический язык с названием Блаб.

Блаб попадает в середину континуума абстрактности. Это не самый мощный язык, но он мощнее, чем Cobol или машинный язык.

И на самом деле, наш гипотетический программист на Блабе не будет использовать ни Cobol, ни машинный код. Для машинных кодов есть компиляторы. Что же касается Cobol-а, наш программист не знает, как на этом языке вообще что-то можно сделать. В Cobol-е ведь даже нет возможности X, присутствующей в Блабе!

Когда наш гипотетический Блаб-программист смотрит вниз на континуум мощности языков, он знает, что смотрит вниз. Менее мощные, чем Блаб, языки явно менее мощны, так как в них нет некой особенности, к которой привык программист. Но когда он смотрит в другом направлении, вверх, он не осознает, что смотрит вверх. То, что он видит, — это просто "странные" языки. Возможно, он считает их одинаковыми с Блабом по мощности, но со всяческими сложными штучками. Блаба для нашего программиста вполне достаточно, так как он думает на Блабе (VladD2: выделено мной).

Когда мы поменяем точку обзора программиста, используя любой язык программирования выше по континууму мощности, мы обнаружим, что теперь программист смотрит на Блаб сверху вниз. «Как же можно что-то сделать, используя Блаб? В нем отсутствует даже конструкция Y!»

Используя метод индукции, приходишь к выводу, что только те программисты, которые понимают самый мощный язык, в состоянии осознать полную картину разницы в мощности между различными языками (видимо, именно это имел в виду Эрик Реймонд, когда говорил о том, что Lisp сделает вас лучше как программиста). Следуя парадоксу Блаба, нельзя доверять мнению других: другие программисты довольны тем языком, который используют, потому что этот язык определяет способ их программистского мышления.

Я понял это на собственном опыте, когда учился в старших классах школы и писал программы на Бейсике. Этот язык не поддерживал даже рекурсию. Трудно представить написание программ без рекурсии, но в то время мне это было не нужно. Я думал на Бейсике. Я был спец. Мастер всего, что изучил.

Пять языков, которые советует хакерам Эрик Реймонд, находятся в разных точках континуума мощности, и то, где они находятся относительно друг друга, — тонкий вопрос. Я скажу, что Lisp находится на вершине континуума. И чтобы поддержать это утверждение, я скажу о том, чего мне не хватает, когда я смотрю на остальные пять языков. Как же можно что-то сделать с ними, думаю я, без свойства Z? И самое большое Z — это макросы. (VladD2: Рассматривать макросы как отдельное свойство — это немного неправильно. На практике их польза увеличивается такими свойствами Lisp'а, как лексические замыкания и частичная параметризация (rest parameters) – аналогичная возможность в Nemerle назевается «частичное применение (partial application)).

Во многих языках есть что-то, называющееся макросом. Но макросы в Lisp'е уникальны (VladD2: на сегодня это так, только если глядеть на другие языки с высоты Lisp-а, но об этом позже). То, что делают макросы, имеет отношение, верите вы или нет, к скобкам. Создатели Lisp'а добавили все эти скобки в язык не для того, чтобы отличаться от других. Скобки в Lisp'е имеют особый смысл, они — внешнее свидетельство фундаментальной разницы между Lisp'ом и другими языками.

Программа на Lisp'е состоит из данных. И не в том тривиальном значении, что исходные файлы содержат символы, а строки — один из типов данных, поддерживаемых языком. После прочтения программы парсером Lisp-код состоит из готового к использованию дерева структур данных.

Дело не в том, что в Lisp'е странный синтаксис, скорее, его нет вообще. Программы пишутся в синтаксических деревьях, которые в других языках генерируются парсером во время разбора исходного текста. Эти синтаксические деревья в Lisp'е полностью доступны вашим программам, и вы можете писать программы, которые изменяют эти деревья. В Lisp'е подобные программы называются макросами. Это программы, которые пишут программы.

Программы, которые пишут программы? И когда же такое может понадобиться?

Не очень часто, если вы думаете на Cobol'е. И постоянно, если вы думаете на Lisp'е. Было бы удобно, если бы я дал пример мощного макроса и сказал бы: "Вот! Смотрите!". Но если бы я и привел пример, для того, кто не знает Lisp, он выглядел бы как белиберда. Рамки данной статьи не позволяют изложить все необходимое для понимания подобного примера. В книге Ansi Common Lisp я старался излагать материал как можно быстрее, но даже так я не добрался до макросов раньше страницы 160.

Однако мне кажется, что я могу дать убедительный аргумент. Исходный текст редактора Viaweb на 20-25 процентов состоял из макросов. Макросы сложнее писать, чем обычные функции Lisp'а, и считается дурным тоном использовать их там, где можно без них обойтись. Поэтому каждый макрос в той программе был необходим. Это значит, что примерно 20-25 процентов кода в программе делают то, что нельзя просто сделать на других языках.

Как бы скептически ни относился Блаб-программист к моим заявлениям о таинственной мощи Lisp'а, это должно его заинтересовать. Мы не писали этот код для своего собственного развлечения. Мы были маленькой компанией, и программировали так, как только могли, чтобы возвести технологический барьер между нами и нашими конкурентами.

Пытливый читатель может задаться вопросом, а нет ли здесь взаимосвязи? Некоторая большая часть кода делала нечто, что очень сложно сделать на других языках. Получившееся в результате программное обеспечение делало то, что программное обеспечение наших соперников делать не могло. Возможно, между этими фактами есть связь. Я советую вам подумать в этом направлении. Возможно, это все не просто старческие бредни.


К чему я привел этот фрагмент? Дело в том, что если вы думаете на C# или, скажем, на Delphi, или даже на C++, то без желания понять и некоторых усилий с вашей стороны вы окажетесь в роли того самого Блаб-программиста, смотрящего на более мощный язык и видящего в нем не более чем кучу непонятных заморочек.

Грэхем немного лукавит. Реальная жизнь сложнее описанной им модели. Языки программирования невозможно четко расположить на шкале, где нулем является машинный язык, а максимальным значением – «самый-самый» язык программирования. Фактически, есть много языков, которые превосходят другие в том или ином аспекте, и уступают в прочих. Тот же Lisp не безгрешен. Причем достоинства языка зачастую являются причиной его недостатков. Так, расплатой за мощные макросы является совершенно ужасный синтаксис без приоритетов операторов (да и без операторов как таковых), без внятно выделяющиеся синтаксических конструкций и т.п. Причем макросы Lisp-а, ко всему прочему, еще и ограничены в своих возможностях, так как не позволяют при своей работе использовать информацию о типах и иным образом взаимодействовать с компилятором (его в большинстве случаев просто нет).

Однако для нас сейчас все это не важно. Для нас важно только то, что для осознания мощности языка нам требуется сломать наши стереотипы мышления и попытаться по-новому взглянуть на, казалось бы, привычные вещи.

Вспомните те времена, когда вы изучали что-то действительно новое для вас. Помните напряжение мозга, возникающее в тщетных попытках понять что-то концептуально новое? А помните то чувство удивленного восторга после того, как вы смогли понять это новое? Помните слова: «Боже, как это просто! И чего я не мог тут понять?!»?

То же самое происходит, когда мы сталкиваемся с новыми приемами программирования и тем более с новыми парадигмами. И чтобы упростить восприятие нового, лучше всего рассматривать его на примерах. Именно этим мы с вами и займемся в этой статье. Но перед этим давайте рассмотрим список возможностей, присутствующих в Nemerle и (скорее всего) отсутствующих в привычных вам языках.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497974
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNну и как тогда сделать так, что-бы если результат первого аргумента - false, второй аргумент не вычислялся?
Ды так и сделать: if not A then False else B.
Не знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора, а вовсе не особое средство выражения. Хотя не настаиваю ниразу.

А вот с этим согласна, двумями руками: "Реальная жизнь сложнее описанной им модели. Языки программирования невозможно четко расположить на шкале, где нулем является машинный язык, а максимальным значением – «самый-самый» язык программирования."
Программирование в голове, а не в языке.

ЗЫ. А вы, мальчики, оказываеццо романтики. Респект, правда.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497976
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNну и как тогда сделать так, что-бы если результат первого аргумента - false, второй аргумент не вычислялся?
Ды так и сделать: if not A then False else B.
Не знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора, а вовсе не особое средство выражения. Хотя не настаиваю ниразу.

А вот с этим согласна, двумями руками: "Реальная жизнь сложнее описанной им модели. Языки программирования невозможно четко расположить на шкале, где нулем является машинный язык, а максимальным значением – «самый-самый» язык программирования."
Программирование в голове, а не в языке.

ЗЫ. А вы, мальчики, оказываеццо романтики. Респект, правда.

напиши код )))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497977
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эту статью про Nemerle я кажется уже где-то читал.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497978
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNНе знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора,

а здесь ты не совсем права:

что будут вернет ленивый, а что неленивый "and":
(a != 0) and (30/a < 5)

при a = 0
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497980
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNZyK_BotaNНе знаю, но ИМХО это техническое решение, для увел. производительности интерпретатора,

а здесь ты не совсем права:



но частично права - лисп отличается от си - технически.

применяя один и тот же стиль программирования на си и лиспе - даст разный результат.

крассивый и элегантный код на лиспе - дающий на выходе эффективный код
, если его дословно переносить в си, будет уродлив, нечитаем, и мало эффективным.

первое чего не хватает в си - дак это сборщика муссора.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497982
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNа здесь ты не совсем права:

что будут вернет ленивый, а что неленивый "and":
(a != 0) and (30/a < 5)

при a = 0

Один вернет False, другой ошибку (или "неопределенность", если есть в языке).
Кста, во многих системах есть такая опция: полное или неполное вычисление лог. выражений. В Delphi, по умолчанию, неполное. Те. походу как раз "ленивое". Но это ведь частности.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497983
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зик, пример с делением на ноль ничего не раскрывает
из океана возможностей Lisp. Это не то. Зачем
тебе это надо? Забей.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497984
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNа здесь ты не совсем права:

что будут вернет ленивый, а что неленивый "and":
(a != 0) and (30/a < 5)

при a = 0

Один вернет False, другой ошибку (или "неопределенность", если есть в языке).
Кста, во многих системах есть такая опция: полное или неполное вычисление лог. выражений. В Delphi, по умолчанию, неполное. Те. походу как раз "ленивое". Но это ведь частности.

вот и я о чем. простой ф-ей ты такое не напишешь, а макросом - запросто.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497985
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNдословно переносить в си, будет уродлив, нечитаем, и мало эффективным.
Ну? И я о том же.
А если дословно перевести стихи Киплинга? Или Пушкина на английский?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497986
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЗик, пример с делением на ноль ничего не раскрывает
из океана возможностей Lisp. Это не то. Зачем
тебе это надо? Забей.

тут я с тобой полностью согласен.

я лишь хотел показать что фраза:
ИринаВДык любой макрос можно сделать функцией.

неверна.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497987
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNдословно переносить в си, будет уродлив, нечитаем, и мало эффективным.
Ну? И я о том же.
А если дословно перевести стихи Киплинга? Или Пушкина на английский?

ты с статьей про "парадокс блаба" ознакомилась?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497992
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNневерна.
if not A then False else B
Чего тут неверного?

ZyK_BotaNты с статьей про "парадокс блаба" ознакомилась?
Да. Даж частично поддержала (выше). А частично нет.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497993
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNневерна.
if not A then False else B
Чего тут неверного?


где здесь ф-я?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37497996
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNневерна.
if not A then False else B
Чего тут неверного?

ZyK_BotaNты с статьей про "парадокс блаба" ознакомилась?
Да. Даж частично поддержала (выше). А частично нет.

значит плохо читала наверное.

изложу суть кратко.
допустим, ты программировала на делфи и си, а лисп только видела(в программы на нем(не лабы) не погружалась и культуры разработки на нем - не знаешь.

у тебя в голове есть некие парадигым и подходы к решению задач, которые ты можешь применить на си и делфи.
ты также можешь их применить и при программировании на лиспе


а есть некий лиспер, у которого есть некие другие подходы к решению задач, они их успешно применяет программируя на лиспе, но на делфе и на сях он их применить не может.

прикол в том, что ты о этих "некик других подходах" - ничего не знаешь, а потому и не согласна с утверждением майтона.

понятно?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37498004
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNгде здесь ф-я?
function SuperAnd (A,B: Boolean): Boolean;
begin
if not A then Result:=False else Result:=B;
end;


ZyK_BotaNу тебя в голове есть некие парадигым и подходы к решению задач, которые ты можешь применить на си и делфи.
ты также можешь их применить и при программировании на лиспе
ИМХО навряд ли. Даж в SQL другие парадигмы. Ну применить то можно, но не нужно.

Я вижу процесс по другому, немного. Есть задача и есть выразительные средства (язык + ран-тайм). Из этого сочетания вытекает алгоритм решения. Те. я за специализацию, многоообразие и гармонию. Тюлень на суше, это грустно. А в воде наоборот.
"Пусть цветут все цветы" (с) Мао-Цзе-Дун (вроде он).
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37498005
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNгде здесь ф-я?
function SuperAnd (A,B: Boolean): Boolean;


а вот и проблема. было же условие, что ф-я - ленивая. а она у тебя - энергичная.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37498661
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВZyK_BotaNне только набор ф-ий, но и мощный рантайм и развитая система макросов.
Дык любой макрос можно сделать функцией.

Макросы вычисляются во время компиляции так-то. А Reader-макросы так вообще на этапе чтения программы.

покажите мне пример функции на Си, выполнение которой происходит во время компиляции исходника в котором определена эта функция.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37498746
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN,

думаю еще наглядней будет попросить реализовать функцию if (test, result, alternative), которая ведет себя как тернарный оператор ?:
=)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37498772
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ультракорокий?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37498801
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВ
Код: plaintext
1.
2.
3.
4.
 function  SuperAnd (A, B : Boolean) : Boolean;
 begin 
   if   not  A  then  Result := False  else  Result := B;
 end ;

теперь, допустим у нас есть:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 function  AlwaysTrue : Boolean;
 begin 
  WriteLn('True');
  Result := True;
 end ;

 function  AlwaysFalse : Boolean;
 begin 
  WriteLn('False');
  Result := False;
 end ;

...

 begin 
   if  SuperAnd(AlwaysFalse, AlwaysTrue)
     then  WriteLn('And: True')
     else  WriteLn('And: False');
 end .

догадываешься, какой вывод мы получим?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37498807
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

не, С =)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499127
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злые вы. Уйду от вас, к жабистам. Они прикольные
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499128
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinкоторая
k0rvinZyK_BotaN,

думаю еще наглядней будет попросить реализовать функцию if (test, result, alternative), которая ведет себя как тернарный оператор ?:
=)

я с этого и хотел начать ))
не знаю почему на лог операции перешел
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499133
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВЗлые вы. Уйду от вас, к жабистам. Они прикольные

))

ты еще пойди на лиспер ру, и скажи что на делфе можешь писать все то, что они на лиспе пишут ))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499140
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВЗлые вы.
так точно
ИринаВЗлые вы. Уйду от вас, к жабистам. Они прикольные

а тут ты ошибаешься. я - жабист ))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499258
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
жива я=)
только лисп все как не подсилу...
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499273
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avb1003,
мне кажется в Си намного проще, хотя бы отсутсвием всех этих скобочек
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499290
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаськажива я=)
только лисп все как не подсилу...
Моя ты лапа...

На чём остановилась? Хотя-бы есть полу-работающий исходнико-преведо-мир?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499675
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаськаavb1003,
мне кажется в Си намного проще, хотя бы отсутсвием всех этих скобочекА я что, спорю? Для этой "задачи" несомненно проще. Но если Вас учат Lisp-у, то надо ему учиться. Некоторые серьезные люди хвалят (Я не имею ввиду обсуждение в этом топике и периодически возникающие холивары в этом форуме.) Например, автор Gnu mdk называет язык встроенного интерпретатора Guile ("Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp") (см. Hacks ) самым замечательным языком программирования (" the most beautiful programming language" ). Но сам эмулятор знаменитой машины MIX (ну или большая его часть) написан им все таки на С.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499796
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avb1003Для этой "задачи" несомненно проще.
не, не проще. а на sed проще, да =)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499843
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinavb1003Для этой "задачи" несомненно проще.
не, не проще. а на sed проще, да =)

че такое sed?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499876
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN,

эм... http://en.wikipedia.org/wiki/Sed =)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37499882
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinZyK_BotaN,

эм... http://en.wikipedia.org/wiki/Sed =)

спасибо. я, как сраный вентузятник, ничего не знал об этой утилите.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37501791
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinZyK_BotaN,

думаю еще наглядней будет попросить реализовать функцию if (test, result, alternative), которая ведет себя как тернарный оператор ?:
=)

Ну не то чтобы совсем не возможно...

Код: plaintext
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.
#include <stdio.h>
#include <boost/function.hpp>

int return_shit()
{
	printf("Shit!!!\n");
	return  1 ;
}

int return_a_lot_of_shit()
{
	printf("Over nine thousand shit!!!\n");
	return  90001 ;
}

typedef boost::function<int ()> func;

template<typename t1,typename t2,typename R>
R tri(bool a, t1 d1, t2 d2 )
{
	if (a ) return d1();
	return d2();
}

int main()
{
	int x =  100 ;

	int a = tri<func,func,int>( x >  9000  , func(&return_a_lot_of_shit) , func(&return_shit) );
	printf( "a=%d", a );
	return  0 ;
}

Но да.. Это решение далеко не универсально и лисповое будет много проще.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37501797
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
clihlt,

Во... Вот так будет чуть универсальнее
Код: plaintext
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.
#include <stdio.h>
#include <boost/function.hpp>
#include <boost/bind.hpp>

int return_shit(int a)
{
	printf("Shit!!!\n");
	return a;
}

int return_a_lot_of_shit(int a, int b)
{
	printf("Over nine thousand shit !!!\n");
	return a+b;
}

template<typename tt>
struct func_type{
	typedef boost::function<tt()> func;
};

template<typename R>
R tri(bool a, typename func_type<R>::func d1, typename func_type<R>::func d2 )
{
	if (a ) return d1();
	return d2();
}

int main()
{
	int x =  10000 ;

	int a = tri<int>( x >  9000  , boost::bind(&return_a_lot_of_shit, 5 , 10 ) , boost::bind(&return_shit, 6 ) );
	printf( "a=%d", a );
	return  0 ;
}
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37501827
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
clihltk0rvinZyK_BotaN,

думаю еще наглядней будет попросить реализовать функцию if (test, result, alternative), которая ведет себя как тернарный оператор ?:
=)

Ну не то чтобы совсем не возможно...

Код: plaintext
1.
2.
3.
#include <stdio.h>
#include <boost/function.hpp>

Но да.. Это решение далеко не универсально и лисповое будет много проще.

К.О. намикает, что это не си, а с++.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37501899
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
clihlt,

ну да, можно пихать lambda-thunk'и везде, где нужно задержать вычисления, но, боюсь, много такого кода не попишешь, устанешь разгребать потом =)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37502428
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN,

Ну да не С.
Но веть к лиспу никто не придирается, что на нем нельзя обработчики прерываний писать.
С он как быб и не позиционируется как язык о-о-очень высокого уровня.

Зы. На C можно так :)
Код: plaintext
1.
#define TRI(x,y,z)  ((x)?(y):(z))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37502742
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
clihltZyK_BotaN,

Ну да не С.
Но веть к лиспу никто не придирается, что на нем нельзя обработчики прерываний писать.
С он как быб и не позиционируется как язык о-о-очень высокого уровня.

Зы. На C можно так :)
Код: plaintext
1.
#define TRI(x,y,z)  ((x)?(y):(z))


ну это и есть макросы.
я же спорил с утверждением - "вместо макросов можно использовать ф-и"
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37503263
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сlihlt , не лезте. У них религия.

ЗЫ. Мальчики, не обижайтесь плзз, на глупую бабу
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37503272
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВЗЫ. Мальчики, не обижайтесь плзз, на глупую бабу
Во первых не глупая. Т.к. твои сомнения - это уже шаг к просвящению. Это плюсек.

Ну а во вторых.... у тебя есть фото c восемью пальчиками?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37503484
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonфото c восемью пальчиками?
Шо, опять?!?!? Я старая, страшная, и очень злая. Гы.
А про Настаську то забыли чтоле? Чо у ней, со списками?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37503487
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВmaytonфото c восемью пальчиками?
Шо, опять?!?!? Я старая, страшная, и очень злая. Гы.
А про Настаську то забыли чтоле? Чо у ней, со списками?
Я тоже не Бред Питт.

А Наташка пока не ответила. Думаю надо отталкиваться от того
что она поняла и что уже сама написала. Коробочные решения
ей уже выдали но это всё фуфло пока она сама не поймет и не
позадаёт вопросы. Я этого жду.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37503490
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНаташка
Настюшка (!)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37503498
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спалился
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37504444
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не получается этот лисп хоть застрелите, эта рекурсия...это вообще печально=((
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37504560
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаськане получается этот лисп хоть застрелите, эта рекурсия...это вообще печально=((И вообще - осень. "Поздняя осень, грачи улетели ... ". "Природа шепчет: налей и выпей". Давно знаком с мудростью: "если хочешь много знать - ляг, поспи и все пройдет", но только сейчас узнал, что ее приписывают академику Колмогорову (см. Музыкальные анекдоты ). Еще понравилась формулировка: "На сердце дикая тоска, а не выпить ли винца?!" Но, "не берите в голову - кладите в карман" - т.е. пишите конкретно, что "не получается", и, может быть, все образуется.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37504564
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня вот английский выучить не получается. Ландан из э кэпитал оф грейт бритн бл...

На сэрцэ такая тоска.... Пойду тоже налью винца.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37504565
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУ меня вот английский выучить не получается. Ландан из э кэпитал оф грейт бритн бл...

На сэрцэ такая тоска.... Пойду тоже налью винца.

та же фигня ((
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37505083
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы. Мне б проблемы ваши. У мну запятые не получаеццо ставить, куда надо.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37505135
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я; до; сих; пор; не; знаю; где; надо; точку; с; запятой; вставлять. Когда в школе был
диктант с этой хренью - старался понаставить как-можно больше этих знаков
за что меня потом били.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37505946
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, мне бы ваши проблемы=)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37506010
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Охти... беда

Ну ты хоть чего-нить поняла в Лиспе. Или вообще нет?

Есть хоть полу-работающий пример который ты поняла?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37506050
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВГы. Мне б проблемы ваши. У мну запятые не получаеццо ставить, куда надо.
Настаськаmayton, мне бы ваши проблемы=)

как сговорились )))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37506526
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNкак сговорились )))
Настаська, скажите: что именно Вы не понимаете? Если синтаксис языка, и/или набор функций, то Вам ИМХО никто не поможет. А если конкр. Ваше задание, и рекурсию в нем, то это, на самделе, оч просто. Смотрите, как напр. можно сделать.
Допустим у нас есть 3 функции (ИМХО в Lisp'е они быть обязаны):
1. ЛевыйСимволИзАтома (ВходАтом)->Символ
2. УбратьЛевыйСимволИзАтома (ВходАтом)->Атом
3. СклеитьДваАтома (ВходАтом1, ВходАтом2)->Атом

Дописываем 4-ю функцию:
ОбработкаСимвола (Символ)->Атом здесь результат: либо атом из ед. входного смвола, либо из неск. цифр (номер в алфавите)

Теперь пишем рекурсивную ф-цию
ОбработкаАтома (ВходАтом)->Атом прим. так:

Код: plaintext
1.
2.
Результат=СклеитьДваАтома(ОбработкаСимвола(ЛевыйСимволИзАтома(ВходАтом)),
                          ОбработкаАтома(УбратьЛевыйСимволИзАтома(ВходАтом)))
Те. наша ф-ция обрабатыает 1-й символ, и вызывает СЕБЯ, для обработки остальных символов

И аналогично, со списками:
1. ЛевыйАтомИзСписка (ВходСписок)->Атом
2. УбратьЛевыйАтомИзСписка (ВходСписок)->Список
3. СклеитьДваСписка (ВходСписок1, ВходСписок2)->Список

Осталось дописать рекурсивную функцию, по образу/подобию ОбработкиАтома
ОбработкаСписка (ВходСписок)->Список

Ну и мальчики, подскажут : как ЭТО пишется в Lisp'е, самом мощном языке в мире.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37506651
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаВНу и мальчики, подскажут : как ЭТО пишется в Lisp'е, самом мощном языке в мире.

))))))
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37506873
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNИринаВНу и мальчики, подскажут : как ЭТО пишется в Lisp'е, самом мощном языке в мире.

))))))

Баланс скобок нарушен :)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37535123
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пыталась чтото таки сама сделать...вот что получилось, но не работает где ошибка не пойму и чего не хватает
Код: plaintext
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.
(defun main (X)
(if (null X) 
nil 
(cons (convert (car X)) (main (cdr X))) 
)
)


(defun IsLetter (x)
(or
(<  64  (char-code x)  91 ) 
(<  96  (char-code x)  123 ) 
))

(defun chern (x)
(coerce 
	( format nil "~s" 
		( - ( char-code x)  64 )) ' list)
) 
)

( defun convert (x)
   (cond  
     (  ( IsLetter (car x) 
         (append ( chern (car x)) ( convert (cdr x)) 
          ( t (cons (car x) ( convert (cdr x))
     )  
   )
)
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37535699
ИринаВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська , крутые лисписты слились, а я Lisp не знаю, совсем.
Вы пробовали сами выполнить программу, типо как по нотам. Заготовте исх. список и пройдитесь, промж. результаты пишите на бумаге, так: "Вызов ф-ции ХХХХ. Вх. параметр =...., результат ....".
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37535801
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська,

Не хватает закрывающихся скобок.
И ошибка в том что пытаетесь интерпритировать строку как список и строку как один символ.

Корвин жеж давал вроде пример работающий.
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37535921
Настаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
clihlt,

я так поняла что надо сначала разбить строку на символы,а потом пройтись по каждому из символов и склеить обратно в строку?
...
Рейтинг: 0 / 0
Помогите написать прогу на Lisp
    #37536070
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаська

Поидее да, но наскока мне хватает знаний, cdr и car не работают со строками. Всмысле они не воспринимают строку, как список символов.
...
Рейтинг: 0 / 0
116 сообщений из 116, показаны все 5 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать прогу на Lisp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]